c++ - 为类中的私有(private)静态变量赋值

标签 c++

<分区>

我有一个 A.hpp 文件:

class A
{
private:
   static std::string s;
public:
   void modify_string();
};

我在 A.cpp 文件中这样实现:

#include "A.hpp"

void A::modify_string()
{
s = "something";  // Error here. 
}

我的主课:

int main()
{
A a;
a.modify_string();
}

我知道静态变量由所有类实例共享。我还浏览了这篇 SO 帖子,其中说明了如何访问静态成员。 Public static member of class .你能告诉我我的概念在哪里缺失吗?

编辑: 我收到此错误: 错误:对 A::s 的 undefined reference

最佳答案

定义时:

void modify_string() {
    s = "something";  // Error here. 
}

您正在创建一个新函数,而不是定义类A 的成员函数modify_string。你需要做的:

void A::modify_string() {

通知编译器您正在为类 A 定义成员函数 modify_string


你还需要一个 ; 在你的类定义之后。


最后,变量 s 是静态的,因此需要在某处单独定义它,以便链接器可以找到对它的引用。所以添加:

 std::string A::s = "default";

您为问题提供的链接中对此进行了清楚的描述。


这是一个工作示例:http://ideone.com/iQ6Kux

关于c++ - 为类中的私有(private)静态变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553581/

相关文章:

c++ - 如何在不破坏网格缠绕顺序的情况下将 Z-Up 顶点转换为 Y-Up 顶点。 (DX9c)

c++ - 应该使用 std::stof 和 atof 之间的区别是什么?

C++将字符串转换为十六进制,反之亦然

c++ - 将字符串文字转换为 std::array 的函数模板

c++ - cout char* 打印地址而不是值

c++ - 如何在 C++ 中声明一个全局变量

python - python 在 gdb 调试器中做了什么?

c++ - 带指针的可调整大小数组

c++ - 尝试使用 boost 读取 xml 时出现空指针

c++ - clang API 中的奇怪代码