使用稍后在C ++中定义的类类型定义类成员

时间:2012-06-21 18:59:47

标签: c++

就像我想做这样的事情,

class Object {
public:
World * Parent_World; //This here
Object(World * Parent_World=NULL) : Parent_World(Parent_World) {}
};

class World {
public:
Object * Objects = new Object[100];
}

由于订单,这不起作用。 我不能只是简单地定义世界,因为我也希望能够访问来自世界的类对象

4 个答案:

答案 0 :(得分:4)

在Object:

之前做出前瞻性声明
class World; //Now you can use pointers and references to World
class Object {
public:
World * Parent_World; //This here
Object(World * Parent_World=NULL) : Parent_World(Parent_World) {}
};

class World {
public:
Object * Objects = new Object[100];
}

进行前向声明为编译器提供了足够的信息来处理指针和对所声明类型的引用

答案 1 :(得分:1)

安德鲁的answer说得对:你需要一个前瞻声明。

但值得注意的是,当编译器必须知道对象的大小时,不能使用前向声明。这意味着您的World*成员可以使用,但World成员不会。

答案 2 :(得分:0)

向前宣布你的课程如下:

   class World;

如果在定义World类之前只使用指向World的指针,则此方法有效。

答案 3 :(得分:0)

简单地说

class World;

class Object { ... }

这称为forward declaration