Ant*_*ony 3 c++ circular-dependency forward-declaration
当在C++中通过指针或引用返回时,很容易通过前向声明来破坏循环依赖.但是,如果你必须按价值返回,你会这样做吗?
考虑下面的简化示例
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法打破循环依赖?试图转发声明Bar只会导致对不完整返回类型的投诉.
定义两种类型,声明其成员函数.然后定义类外的成员函数,甚至在第二个类定义之后.
struct Bar;
struct Foo {
Bar bar();
};
struct Bar {
Foo foo;
};
Bar Foo::bar() {return Bar{*this}; }
Run Code Online (Sandbox Code Playgroud)