如果这两个类在同一个“.h”文件中声明,如何使这段代码工作?如果它们是分开的,如何使它工作?
简单的问题,但谷歌搜索并没有帮助我。
class Container
{
Piece p;
public:
Container() :p(this) {};
};
class Piece
{
Container* cont;
public:
Piece(Container * c) :cont(c) {};
};
答案 0 :(得分:2)
转发声明Container
,然后在以后定义:
class Container;
class Piece
{
Container* cont;
public:
Piece(Container * c) :cont(c) {};
};
class Container
{
Piece p;
public:
Container() :p(this) {};
};
答案 1 :(得分:1)
前瞻性声明就是你要找的。 p>
class Container;
class Piece
{
Container* cont;
public:
Piece(Container * c) :cont(c) {};
};
class Container
{
Piece p;
public:
Container() :p(this) {};
};
如果你谷歌你会找到更多信息。见下文。