C++:两个需要彼此的类
问题描述:
我正在做一个游戏,我有一个叫做Man
的类和一个叫做Block
的类,他们都需要对方的代码,但它们都在单独的文件中。有没有办法“预定义”一个班级?像Objective-C的@class宏一样?C++:两个需要彼此的类
答
它被称为循环依赖。在课堂上Two.h
class One;
class Two {
public:
One* oneRef;
};
,并在类One.h
class Two;
class One {
public:
Two* twoRef;
};
的 “一类;”和“二级”;指令分别分配一个类名“One”和“Two”;但他们没有定义超出名称的任何其他细节。因此,您可以创建指针类,但不能包括整个类,像这样:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
上面两个例子就不能编译的原因是因为当编译器知道有一类一,这不是” t知道可能包含哪些字段,方法或虚方法,因为只定义了名称,而不是实际的类定义。
答
是的。
class Man;
这将声明Man
为“不完整类型”。您可以声明它的指针或引用以及其他一些内容,但不能创建实例或访问它的成员。这不是一个完整的描述,你可以做什么,不能做一个不完整的类型,但这是一般的想法。
+1
需要注意的是,您可以继续并在以后包含完整类型并获得访问权限。您可以在标题中使用不完整的类型,然后将完整的标题定义包含在cpp中以利用它。 – 2010-07-06 20:41:17
听起来像你想要的是一个前瞻性声明。 – mooware 2010-07-06 20:37:22
BlockDude +1。 – 2010-07-06 22:42:46