C++:将构造对象的引用传递给构造成员对象?

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.

有没有人对如何更接近我正在寻找的东西有任何见解?

谢谢!

Pup*_*ppy 5

在初始化列表中使用它不是 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列表完成之前可能还不存在.但它绝对允许携带一个指针或引用一个对象在它的初始化列表,并通过它.