有沒有辦法在頭文件中聲明這些類而不間接?聲明不帶指針的默認參數循環引用?
// 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