C++循环依赖按值返回?
C++ circular dependency returning by value?
当return在 C++ 中通过指针或引用调用时,很容易通过前向声明打破循环依赖。但是在必须按值 return 的情况下,你会怎么做?
考虑下面的简化示例
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
有没有办法打破循环依赖?尝试转发 declare Bar 只会导致有关不完整 return 类型的投诉。
定义两个类型,声明它们的成员函数。然后定义class之外的成员函数,甚至在第二个class定义之后。
struct Bar;
struct Foo {
Bar bar();
};
struct Bar {
Foo foo;
};
Bar Foo::bar() {return Bar{*this}; }
当return在 C++ 中通过指针或引用调用时,很容易通过前向声明打破循环依赖。但是在必须按值 return 的情况下,你会怎么做?
考虑下面的简化示例
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
有没有办法打破循环依赖?尝试转发 declare Bar 只会导致有关不完整 return 类型的投诉。
定义两个类型,声明它们的成员函数。然后定义class之外的成员函数,甚至在第二个class定义之后。
struct Bar;
struct Foo {
Bar bar();
};
struct Bar {
Foo foo;
};
Bar Foo::bar() {return Bar{*this}; }