C++ 未声明类的类成员
如果这两个类在同一个“.h”文件中声明,如何使这段代码工作?如果它们在单独的系统中,如何使其工作 这个问题很简单,但谷歌搜索帮不了我C++ 未声明类的类成员,c++,C++,如果这两个类在同一个“.h”文件中声明,如何使这段代码工作?如果它们在单独的系统中,如何使其工作 这个问题很简单,但谷歌搜索帮不了我 class Container { Piece p; public: Container() :p(this) {}; }; class Piece { Container* cont; public: Piece(Container * c) :cont(c) {}; }; 向前声明容器,然后稍后定义: class Conta
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解释,您所做的实际上是先声明片段谢谢。我不知道它的名字,谢谢。我不知道它的名字。