有没有办法在头文件中声明这些类而不间接?声明不带指针的默认参数循环引用?
// Forwards declaration of B
class B;
class A
{
public:
// Default parameter referring to B. May return its parameter
const B& func(const B& b = B());
};
class B
{
public:
// B ctors
B() {}
B(const B&) {}
// B has A as a member
A a;
};
的Visual C++ 2008告诉我这件事:
error C2514: 'B' : class has no constructors
和点B的前向声明( “B类”;),显然不能见下文B的构造函数。 A不能跟随B,因为B包含A作为成员。
如果必须使用间接方式,那么最好的方法是什么?也许在C++ 0x B的A可能是一个unique_ptr成员?或者也许纯粹是为了回避这个问题而增加一个强化班?
感谢您的回答。这会工作,但我忘了提及 - func()返回一个常量B&,并可能返回它的参数,所以没有参数的版本是没有意义的。然后怎样呢? – AshleysBrain 2009-12-14 00:18:32