C ++类的非默认构造函数,它是另一个类的成员?

时间:2017-07-15 19:48:12

标签: c++ constructor

这是关于构造函数的问题。两个C ++类A和B在概念上与

相关
class A
{
  B b;
};

class B
{
  A *a;
};

问题是,当创建A的实例时,我希望它的成员B使用指向A的指针构造。所以似乎B需要一个构造函数,该构造函数具有指向A实例的指针作为参数,并且在构造A的实例时调用B的构造函数,而不是B的默认构造函数。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

此处仅使用struct作为公共默认值。

struct A;

struct B {
    B(A *a_ptr = 0) : a(a_ptr) {}
    A *a;
};

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

您可能会在忙碌编译器的A构造函数中收到警告,this指向尚未完全构造的对象。