未申报类的班级成员

时间:2017-07-16 12:22:55

标签: c++

如果这两个类在同一个“.h”文件中声明,如何使这段代码工作?如果它们是分开的,如何使它工作?

简单的问题,但谷歌搜索并没有帮助我。

class Container
{
    Piece p;
public:
    Container() :p(this) {};
};

class Piece
{
    Container* cont;
public:
    Piece(Container * c) :cont(c) {};
};

2 个答案:

答案 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)

前瞻性声明就是你要找的。

class Container;

class Piece
{
    Container* cont;
public:
    Piece(Container * c) :cont(c) {};
};
class Container
{
    Piece p;
public:
    Container() :p(this) {};
};

如果你谷歌你会找到更多信息。见下文。

When can I use a forward declaration?