С++ Доступ к частному статическому члену из общедоступного статического метода?
Скажем, у меня есть .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)?
Ответы
Ответ 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;