两个类的定义互相依赖,谁先定义都不行
蓝色歌谣 2010-06-08 11:42:24
两个类的定义互相依赖,谁先定义都不行。
//////////////////////////////////////////////////////////////////////////
// 编译出错的代码
class Node;
class Pool
{
public:
Node* memory;
Pool()
{
memory = new Node();
}
};
class Node
{
public:
static Pool m_pool;
};
Pool Node::m_pool;
int main()
{
Node *p = Node::m_pool.memory;
}
//////////////////////////////////////////////////////////////////////////
为什么加入“无用”的模板就正常了?如果不用模板怎样使第一段代码编译通过?
//////////////////////////////////////////////////////////////////////////
// 正常运行的代码
class Node;
template<class a>
class Pool
{
public:
Node* memory;
Pool()
{
memory = new Node();
}
};
class Node
{
public:
static Pool<bool> m_pool;
};
Pool<bool> Node::m_pool;
int main()
{
Node *p = Node::m_pool.memory;
}
//////////////////////////////////////////////////////////////////////////