这是关于构造函数的问题。两个C ++类A和B在概念上与
相关class A
{
B b;
};
class B
{
A *a;
};
问题是,当创建A的实例时,我希望它的成员B使用指向A的指针构造。所以似乎B需要一个构造函数,该构造函数具有指向A实例的指针作为参数,并且在构造A的实例时调用B的构造函数,而不是B的默认构造函数。
有一种简单的方法吗?
答案 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
指向尚未完全构造的对象。