Возможно, возникла проблема с компоновщиком:
- Предоставление определения класса и статического члена в заголовочном файле,
- Включение этого заголовка в два или более исходных файла.
Это распространенная проблема для тех, кто начинает с C ++. Статический член класса должен быть инициализирован в одной единице перевода, т.е. в одном исходном файле.
К сожалению, статический член класса должен быть инициализирован вне тела класса. Это усложняет написание кода только для заголовка, и поэтому я использую совершенно другой подход. Вы можете предоставить свой статический объект через статическую или нестатическую функцию класса, например:
class Foo
{
// int& getObjectInstance() const {
static int& getObjectInstance() {
static int object;
return object;
}
void func() {
int &object = getValueInstance();
object += 5;
}
};