C++ Access private static member from public static method?
本问题已经有最佳答案,请猛点这里访问。
假设我有一个.hpp文件,其中包含一个带有公共静态方法和私有静态成员/变量的简单类。这是一个示例类:
1 2 3 4 5 6 7 8 9 10 11 | class MyClass { public: static int DoSomethingWithTheVar() { TheVar = 10; return TheVar; } private: static int TheVar; } |
当我打电话时:
1 | int Result = MyClass::DoSomethingWithTheVar(); |
我希望"结果"等于10;
相反,我得到(在第10行):
1 | undefined reference to `MyClass::TheVar' |
第10行是方法中的"thevar=10"。
我的问题是是否可以从静态方法(dosomethingwiththevar)访问私有静态成员(thevar)?
对你的问题的回答是肯定的!您刚才没有定义静态成员
1 | int MyClass::TheVar = 0; |
在CPP文件中。
它是尊重一个定义规则。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 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; |