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

Non-default constructor for C++ class which is a member of another class?

本文关键字:另一个 成员 默认 C++ 构造函数      更新时间:2023-10-16

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

class A
{
B b;
};
class B
{
A *a;
};

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

有没有简单的方法可以做到这一点?

在此处使用struct仅用于公共默认值。

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

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

相关文章: