我似乎无法让这个未定义的引用消失。未定义的参考?有没有我没有看到的东西? (C++,singleton类)
我下Scene.h的私人部分验证码:
static Scene * scene_;
有一个的#include“Scene.h”在场景的头的第一个部分。 cpp
这是我目前收到的唯一错误,有什么想法?
我会提供任何你想要的信息。
我似乎无法让这个未定义的引用消失。未定义的参考?有没有我没有看到的东西? (C++,singleton类)
我下Scene.h的私人部分验证码:
static Scene * scene_;
有一个的#include“Scene.h”在场景的头的第一个部分。 cpp
这是我目前收到的唯一错误,有什么想法?
我会提供任何你想要的信息。
在声明静态成员,你还必须在一个编译单元(也是唯一一个)定义它:
// a.h
class A
{
static int x;
};
// a.cpp
int A::x = 0;
在类的变量不会保留内存的声明,只是告诉编译器(来自其他编译单元)将会有一个变量可以在某处定义的名称访问。
为什么要用Scene*
代替Scene
?你基本上说“使用static
为指向Scene
的指针分配足够的空间”,然后在运行时将这个Scene
对象与new
(以及我假设从来没有delete
它)堆放在堆上。
相反,只是有静态分配并初始化的Scene
对象:( - >变)
static Scene scene_;
,然后相应地变更为现场的所有引用:
scene_.addObject(&object);
这种情况很容易并减少按键启动。与Java或C#一样,C++不需要new
。
对不起,我的阅读理解有点偏离。我删除了我的答案。 – 2009-04-21 20:42:12