c++ 两个 类 相互引用
c++ Two Classes Refering To Each Other
我正在使用 C++。
我需要创建两个相互引用的 类。
像这样:
class A {
private:
B b;
//etc...
};
class B {
private:
A a;
//etc...
};
我该怎么做?
抱歉我的英语不好,谢谢你帮助我:)
即使在原则上你也不能这样做,因为单个 A
对象将包含一个 B
,其中包含另一个 A
,其中包含 另一个 B
和 另一个 A
...
如果你只是想要一个引用,你可以简单地做
class B; // forward declaration
class A {
B& b_; // reference
public:
explicit A(B& b) : b_(b) {}
};
class B {
A a_;
public:
B() : a_(*this) {}
};
现在每个 B
都包含一个 A
,它指的是它所在的 B
。
但是请注意,在 A
的构造函数中,您实际上不能对 b
(或 b_
)做任何事情,因为它引用的对象尚未完成尚未创建自己。
指针也可以 - 当然 A
和 B
都可以有引用而不是包含直接对象的 B
。
我正在使用 C++。
我需要创建两个相互引用的 类。
像这样:
class A {
private:
B b;
//etc...
};
class B {
private:
A a;
//etc...
};
我该怎么做?
抱歉我的英语不好,谢谢你帮助我:)
即使在原则上你也不能这样做,因为单个 A
对象将包含一个 B
,其中包含另一个 A
,其中包含 另一个 B
和 另一个 A
...
如果你只是想要一个引用,你可以简单地做
class B; // forward declaration
class A {
B& b_; // reference
public:
explicit A(B& b) : b_(b) {}
};
class B {
A a_;
public:
B() : a_(*this) {}
};
现在每个 B
都包含一个 A
,它指的是它所在的 B
。
但是请注意,在 A
的构造函数中,您实际上不能对 b
(或 b_
)做任何事情,因为它引用的对象尚未完成尚未创建自己。
指针也可以 - 当然 A
和 B
都可以有引用而不是包含直接对象的 B
。