Assign value to private static variable in a class
本问题已经有最佳答案,请猛点这里访问。
我有一个文件a.hpp,如下所示:
1 2 3 4 5 6 7 | class A { private: static std::string s; public: void modify_string(); }; |
我将在文件a.cpp中实现这一点,如下所示:
1 2 3 4 5 6 | #include"A.hpp" void A::modify_string() { s ="something"; // Error here. } |
我的主要课程:
1 2 3 4 5 | int main() { A a; a.modify_string(); } |
我理解静态变量由所有类实例共享。我还浏览了这篇文章,上面说了如何访问静态成员。类的公共静态成员。你能告诉我我的概念在哪里缺失吗?
编辑:我得到这个错误:错误:未定义对a::s的引用
定义时:
1 2 3 | void modify_string() { s ="something"; // Error here. } |
您正在创建一个新函数,而不是定义类
1 | void A::modify_string() { |
通知编译器您正在为类
在类定义之后还需要一个
最后,变量
1 | std::string A::s ="default"; |
这在你为你的问题提供的链接中有明确的描述。
下面是一个工作示例:http://ideone.com/iq6kux
您需要在一个编译单元中为S保留存储空间。
写下来就行了
1 | std::string A::s; |
在一个源文件中。
您在a.cpp中的定义
1 2 3 4 | void A::modify_string() { s ="something"; } |