C ++:两个需要彼此的类

时间:2010-07-06 20:33:25

标签: c++ oop

我正在制作游戏,我在他们的代码中有一个名为Man的类和一个名为Block的类,它们彼此都需要,但它们处于单独的文件中。有没有办法“预定义”一个班级?就像Objective-C的@class宏一样?

2 个答案:

答案 0 :(得分:11)

class Man;

这会将Man声明为“不完整类型”。您可以声明指针或对它的引用以及其他一些内容,但是您无法创建实例或访问它的成员。这不是对不完整类型可以做什么和不做什么的完整描述,但这是一般的想法。

答案 1 :(得分:5)

它被称为循环依赖。在Class.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;
};

上面两个例子无法编译的原因是因为虽然编译器知道有一个类,但它不知道一类可能包含哪些字段,方法或虚方法,因为只定义了名称,而不是实际的类定义。