我已经阅读了很多循环依赖主题,但我找不到解决我问题的主题。我有两个包含彼此指针的类:
class B;
class A
{
public:
A(B* _b, int _c): b(_b), c(_c) {}
B* b;
int c;
};
class B
{
public:
B(A* _a, int _d): a(_a), d(_d) {}
A* a;
int d;
};
问题是在以下代码中:
class C
{
public:
A* a_ptr;
B* b_ptr;
C()
{
a_ptr = new A(b_ptr, 3);
b_ptr = new B(a_ptr, 2);
qDebug() << a_ptr->c;
qDebug() << b_ptr->d;
qDebug() << a_ptr->b->d;
qDebug() << b_ptr->a->c;
}
}
最后两行是崩溃的应用程序。我了解问题和崩溃的原因。我可以为成员编写 setter 并在创建对象后调用它们,因此指针将是有效的。但是,我希望在调用构造函数后对象是完整的,而不调用任何其他方法。
所以......我想知道是否有任何方法可以在构造函数中注入(循环)指针?