Неопределенная ссылка на статическую переменную-член в статической функции-члене

Вот мой заголовочный файл:

class MapObject: public ScreenObject {
 static float xoffset, yoffset;
public:
 static float Getxoffset() {
 return xoffset;
 }

};

#endif // MAPOBJECT_H

Однако на линии возвращаются xoffset; Я получаю следующую ошибку: неопределенная ссылка на "MapObject :: xoffset" почему?

2 ответа

Поместите это в исходный файл (по внешнему виду MapObject.cpp)

#include "MapObject.h"

float MapObject::xoffset = 0;
float MapObject::yoffset = 0;


//... the rest of your MapObject code here...

В C++ не константные static члены должны быть объявлены в определении класса и определены с глобальной областью, чтобы должным образом дать ссылку на ссылку.


У вас должно быть что-то подобное в MapObject.cpp:

float MapObject::xoffset = 0.0f;
float MapObject::yoffset = 0.0f;

Таким образом вы определяете и инициализируете их.

licensed under cc by-sa 3.0 with attribution.