Неопределенная ссылка?Есть что-то, чего я не вижу?(c ++, одноэлементный класс)

StackOverflow https://stackoverflow.com/questions/774464

Вопрос

Кажется, я не могу избавиться от этой неопределенной ссылки.

(screenshot of issue)

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

static Scene * scene_;

Существует #включить "Scene.h" в самой первой части заголовка Scene.cpp

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

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

Это было полезно?

Решение

Когда вы объявляете статический элемент, вы также должны определить его в одном модуле компиляции (и только в одном).:

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

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

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

Другие советы

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

Вместо этого просто выделите static и инициализировать в Scene объект:

static Scene scene_;

а затем соответствующим образом измените все ссылки на сцену (-> становится .):

scene_.addObject(&object);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top