jed*_*rds 4 c++ inheritance reference
好的,请考虑以下课程:
class Object
{
public:
// Constructor
Object() :
[Initialization List]
{
...
}
...
};
class Container
{
public:
Object A;
Object B;
....
Container() :
[Initialization List]
{
}
};
Run Code Online (Sandbox Code Playgroud)
我想向对象提供[访问Container及其成员].
我的第一个想法是以某种方式将对当前Container对象的引用传递给Objects的构造函数.但我无法弄清楚如何做到这一点.
我已经搞乱了"这个",但我没有得到任何有效的东西.我试过这样的事情:
class Object
{
public:
Container& c
// Constructor
Object(Container& c_) :
c(c_)
{
...
}
...
};
class Container
{
public:
Object A;
Object B;
....
Container() :
A(Object(this))
B(Object(this))
{
}
};
Run Code Online (Sandbox Code Playgroud)
我最终的目标是能够从对象A的成员方法中访问对象B.
有没有人对如何更接近我正在寻找的东西有任何见解?
谢谢!
在初始化列表中使用它不是 UB 或坏的,this但是需要小心,并且您的代码完全有效,只需稍作修改即可.
class Container;
class Object
{
public:
Container& c
// Constructor
Object(Container& c_) :
c(c_)
{
}
};
class Container
{
public:
Object A;
Object B;
Container() :
A(Object(*this))
B(Object(*this))
{
}
};
Run Code Online (Sandbox Code Playgroud)
this是一个指针,你想要一个引用,一个简单的去引用就可以了.这是完全合法且定义的代码.不允许通过指针访问任何成员数据或函数,因为这些成员数据或函数在init列表完成之前可能还不存在.但它绝对是允许携带一个指针或引用一个对象在它的初始化列表,并通过它.