gpt4 book ai didi

c++ - 如何初始化const循环引用成员

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:34 27 4
gpt4 key购买 nike

比如我有两个类

class Foo;
class Bar;

class Foo {
const Bar &m_bar;
...
};

class Bar {
const Foo &m_foo;
...
};

fooFoo 的对象和 barBar 的对象.有什么方法(正常或“黑客”)来创建/初始化 foobar他们的成员m_barm_foo会互相引用(我的意思是 foo.m_barbarbar.m_foo 是 'foo')?

允许添加任何成员到FooBar , 为他们添加 parent ,使他们成为模板等等。

最佳答案

foobar 的联系是什么?如果他们有外部链接,你可以这样写:

extern Foo foo;
extern Bar bar;

Foo foo( bar );
Bar bar( foo );

(我在这里假设是构造函数设置了对参数的引用。)

当然,这假设命名空间范围和静态生命周期(但匿名命名空间没问题)。

如果他们是类(class)成员,也没有问题:

class Together
{
Foo foo;
Bar bar;
public:
Together() : foo( bar ), bar( foo ) {}
};

如果它们是局部变量(无绑定(bind)),我认为没有一个解法。

编辑:

其实局部变量有一个简单的解决方法:就是定义一个将它们作为成员的本地类,并使用它。

关于c++ - 如何初始化const循环引用成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com