Подтвердить что ты не робот

С++ Доступ к частному статическому члену из общедоступного статического метода?

Скажем, у меня есть .hpp файл, содержащий простой класс с открытым статическим методом и частный статический член/переменную. Это пример класса:

class MyClass
{
public:
    static int DoSomethingWithTheVar()
    {
        TheVar = 10;
        return TheVar;
    }
private:
    static int TheVar;
}

И когда я звоню:

int Result = MyClass::DoSomethingWithTheVar();

Я ожидал бы, что "Результат" равен 10;

Вместо этого я получаю (по строке 10):

undefined reference to `MyClass::TheVar'

Строка 10 - "TheVar = 10;" из метода.

Мой вопрос в том, можно ли получить доступ к частному статическому члену (TheVar) из статического метода (DoSomethingWithTheVar)?

4b9b3361

Ответ 1

Ответ на ваш вопрос - да! Вы просто не указали статический член TheVar:

int MyClass::TheVar = 0;

В файле cpp.

Он должен уважать Одно правило определения.

Пример:

// Myclass.h
class MyClass
{
public:
    static int DoSomethingWithTheVar()
    {
        TheVar = 10;
        return TheVar;
    }
private:
    static int TheVar;
};

// Myclass.cpp
#include "Myclass.h"

int MyClass::TheVar = 0;