未声明类的类成员
问题描述:
如何使这一点的代码工作,如果这两个类声明在同一个“.h”文件中?如果它们处于不同的状态,如何使它工作?未声明类的类成员
简单的问题,但谷歌搜索没有帮助我。
class Container
{
Piece p;
public:
Container() :p(this) {};
};
class Piece
{
Container* cont;
public:
Piece(Container * c) :cont(c) {};
};
答
正向声明Container
,然后把它定义以后:
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) {};
};
如果你谷歌,你会发现更多的信息。见下面的一个。
+1
谢谢。不知道它的名字。 – Shocky2
为什么我不能首先声明Piece,然后在Container上?有没有办法做到这一点不依赖于声明的顺序? – Shocky2
@ shocky2因为'Piece'持有一个指向'Container'的指针,指针允许有一个不完整的类型,但'Container'有一个'Piece'对象,不允许对象不完整。一个不完整的类型是一个已经提前声明的类型。 –
有前向声明,你首先声明Piece ... – CIsForCookies