gpt4 book ai didi

C++ 类和相互关联的对象形成一个循环

转载 作者:太空狗 更新时间:2023-10-29 20:39:11 24 4
gpt4 key购买 nike

我如何在 C++ 中实现互锁对象结构以形成循环

class Foo
{
Bar bar;
};

class Bar
{
Foo foo;
};

最佳答案

Foo.h

#include <memory>

class Bar; // Forward declare Bar class

class Foo
{
public:
Foo();

private:
std::unique_ptr<Bar> bar; // Use pointer so that header include is not necessary
};

Foo.cpp

#include "Foo.h"
#include "Bar.h" // Now include bar (in the cpp file to avoid circular includes)

Foo::Foo() :
bar(new Bar())
{
// Do nothing
}

使用与 Bar.hBar.cpp 相同的设置。

编辑1

注意:以上代码假定使用了支持 C++11 的编译器。但是,如果不是这种情况,则应使用原始指针(例如,Bar* bar)并且必须实现析构函数以调用delete bar。这是避免资源泄漏所必需的;当然,上面假设 FooBar 拥有它们的成员指针是这些类的正确行为,但它可以很容易地改变这不是正确的假设。

关于C++ 类和相互关联的对象形成一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28697567/

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