C++指的是正在构造的对象

Pyo*_*tch 0 c++ construction reference

在C++中,我引用了一个想要指向其所有者的对象,但是我无法在包含类的构造期间设置指针,因为它没有完成构造.所以我想尝试做这样的事情:

class A {
   public:

     A() : b(this) {}
   private:
     B b;
};

class B {
   public:
     B(A* _a) : a(_a) {}
   private:
     A* a;
};
Run Code Online (Sandbox Code Playgroud)

有没有办法确保B总是用A*初始化而没有A拿着指向B的指针?

谢谢

Mic*_*hne 6

试试这个:

class A;

class B {
public:
  B(A *_a) : a(_a) {};

private:
  A* a;
};

class A {
public:
  A() : b(this) {};

private:
  B b;

};
Run Code Online (Sandbox Code Playgroud)

由于B完全包含在A中,因此必须首先声明它.它需要一个指向A的指针,所以你必须在声明B之前前向声明A.

此代码在或多或少的当前版本的g ++下编译.