C++ 未声明类的类成员

C++ 未声明类的类成员,c++,C++,如果这两个类在同一个“.h”文件中声明,如何使这段代码工作?如果它们在单独的系统中,如何使其工作 这个问题很简单,但谷歌搜索帮不了我 class Container { Piece p; public: Container() :p(this) {}; }; class Piece { Container* cont; public: Piece(Container * c) :cont(c) {}; }; 向前声明容器,然后稍后定义: class Conta

如果这两个类在同一个“.h”文件中声明,如何使这段代码工作?如果它们在单独的系统中,如何使其工作

这个问题很简单,但谷歌搜索帮不了我

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

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

向前声明
容器
,然后稍后定义:

class Container;

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

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

向前声明
容器
,然后稍后定义:

class Container;

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

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

远期申报是您需要的

class Container;

class Piece
{
    Container* cont;
public:
    Piece(Container * c) :cont(c) {};
};
class Container
{
    Piece p;
public:
    Container() :p(this) {};
};
如果你用谷歌搜索,你会发现更多的信息。请看下面的一个


您需要的是远期申报

class Container;

class Piece
{
    Container* cont;
public:
    Piece(Container * c) :cont(c) {};
};
class Container
{
    Piece p;
public:
    Container() :p(this) {};
};
如果你用谷歌搜索,你会发现更多的信息。请看下面的一个


为什么我不能先申报,然后再申报?有没有一种不依赖于声明顺序的方法?@shocky2因为
Piece
持有一个指向
Container
的指针,指针可以有一个不完整的类型,但是
Container
有一个
Piece
对象,对象不允许不完整。一个不完整的类型是一个已被正向声明的类型。@CisForCookies只是假设OP是另一种意思。如果它们在不同的文件中呢?@RickAstley不是直接给你的:)我是想向OP解释,你所做的实际上是先声明一块,为什么我不能先声明一块,然后再声明那个容器?有没有一种不依赖于声明顺序的方法?@shocky2因为
Piece
持有一个指向
Container
的指针,指针可以有一个不完整的类型,但是
Container
有一个
Piece
对象,对象不允许不完整。一个不完整的类型是一个已被正向声明的类型。@CisForCookies只是假设OP是另一种意思。如果它们在不同的文件中,那又如何?@RickAstley不是直接指向您的:)我是想向OP解释,您所做的实际上是先声明片段谢谢。我不知道它的名字,谢谢。我不知道它的名字。