У меня есть этот класс, который имеет статический член. это также базовый класс для нескольких других классов в моей программе. Вот его заголовочный файл:
#ifndef YARL_OBJECT_HPP
#define YARL_OBJECT_HPP
namespace yarlObject
{
class YarlObject
{
// Member Variables
private:
static int nextID; // keeps track of the next ID number to be used
int ID; // the identifier for a specific object
// Member Functions
public:
YarlObject(): ID(++nextID) {}
virtual ~YarlObject() {}
int getID() const {return ID;}
};
}
#endif
и вот его файл реализации.
#include "YarlObject.hpp"
namespace yarlObject
{
int YarlObject::nextID = 0;
}
Я использую g ++, и он возвращает три undefined reference to 'yarlObject::YarlObject::nextID
ошибки компоновщика. Если я изменю фразу ++nextID
в конструкторе просто на nextID
, тогда я получу только одну ошибку, и если я изменю ее на 1
, она будет корректно связываться Я представляю, что это что-то простое, но что происходит?