2009-04-21 2 views
0

Я не могу заставить эту неопределенную ссылку уйти.Неопределенная ссылка? Что-то я не вижу? (C++, singleton class)

(screenshot of issue)

У меня есть этот код под частный раздел Scene.h:

static Scene * scene_; 

Там является #include «Scene.h» в самой первой части заголовка сцены. cpp

Это единственная ошибка, которую я получаю в данный момент, любые идеи?

Я поставлю любую другую информацию, которую вы хотите.

+0

Извините, мое понимание прочитанного было немного выключено. Я удалил свой ответ. –

ответ

7

При объявлении статического члена необходимо также определить его в одном модуле компиляции (и только один):

// a.h 
class A 
{ 
    static int x; 
}; 

// a.cpp 
int A::x = 0; 

Декларация о переменной в классе не будет зарезервирован память, просто скажите компилятору (из других единиц компиляции), что будет существовать переменная, доступная по этому имени, определенному где-то.

1

Зачем использовать Scene* вместо Scene? Вы, по сути, говорите: «Используйте static, чтобы выделить достаточно места для указателя на Scene», а затем во время выполнения вы поместите этот объектв кучу с new (и, я предполагаю, никогда не delete).

Вместо этого просто статические выделить и инициализировать на Scene объект: (. -> становится)

static Scene scene_; 

, а затем изменить все ссылки на сцены соответственно:

scene_.addObject(&object); 

Это проще и занимает меньше нажатий клавиш для загрузки. C++ не требует new так же часто, как Java или C#.

Смежные вопросы