有什么方法可以在没有间接的情况下在头文件中声明这些类?
// 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 的前向声明(“class B;”),显然在下面看不到 B 的构造函数。A 不能跟随 B,因为 B 包含 A 作为成员。
如果必须使用间接,最好的方法是什么?也许在 C++0x B 中的 A 可能是一个 unique_ptr 成员?或者,也许有一个提升类纯粹是为了回避这个问题?