我正在制作一个游戏,我有一个叫做的类Man和一个Block在他们的代码中调用的类,它们都需要彼此,但它们都是单独的文件.有没有办法"预定义"一个班级?像Objective-C的@class宏?
Fre*_*son 11
是.
class Man;
Run Code Online (Sandbox Code Playgroud)
这将声明Man为"不完整类型".您可以声明指针或对它的引用以及其他一些内容,但是您无法创建实例或访问它的成员.这不是对不完整类型可以做什么和不可做什么的完整描述,但这是一般的想法.
它被称为循环依赖.在Class Two.h中
class One;
class Two {
public:
One* oneRef;
};
Run Code Online (Sandbox Code Playgroud)
在One.h课程中
class Two;
class One {
public:
Two* twoRef;
};
Run Code Online (Sandbox Code Playgroud)
"一级;" 和"二级;" 指令分别分配一个类名"One"和"Two"; 但他们没有定义名称之外的任何其他细节.因此,您可以在类中创建指针,但不能像这样包含整个类:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
Run Code Online (Sandbox Code Playgroud)
上面两个例子不能编译的原因是因为虽然编译器知道有一个类,但它不知道一类可能包含哪些字段,方法或虚方法,因为只定义了名称,而不是实际的类定义.