Mic*_*hel 5 c++ pointers circular-reference
有没有办法在不使用指针的情况下定义循环引用?
我需要有这样的事情:
struct A;
struct B {
A a;
};
struct A {
B b;
};
Run Code Online (Sandbox Code Playgroud)
谢谢!
Jar*_*Par 13
您可以改用引用
struct A;
struct B {
A& a;
};
struct A {
B b;
};
Run Code Online (Sandbox Code Playgroud)
但是,如果没有某种程度的间接,就不可能创建循环引用.你的样本正在做什么甚至没有创建循环引用,它试图创建一个递归定义.结果将是无限大小的结构,因此不合法.
这怎么可行?如果我没记错的话,一旦设置就无法修改引用的地址值,因此无法定义循环引用.
它可以像下面一样工作(与Jared的示例加上构造函数定义相同):
struct A;
struct B {
A& m_a;
B(A& a) : m_a(a) {}
};
struct A {
B m_b;
//construct B m_b member using a reference to self
A() : m_b(*this) {}
//construct B m_b member using a reference to other
A(A& other) : m_b(other) {}
};
Run Code Online (Sandbox Code Playgroud)