3

就像我想做这样的事情,

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];
}

由于订单,这不起作用。而且我不能简单地更早地定义世界,因为我还希望能够访问来自世界的类 Object

4

4 回答 4

5

在 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];
}

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

于 2012-06-21T19:01:22.710 回答
1

安德鲁的回答是正确的:你需要一个前向声明。

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

于 2012-06-21T19:02:56.793 回答
0

向前声明你的类,如下所示:

   class World;

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

于 2012-06-21T19:01:42.687 回答
0

简单的说

class World;

class Object { ... }

这称为前向声明

于 2012-06-21T19:02:31.417 回答