c++ - 如何通过类构造函数访问私有(private)静态成员变量?

标签 c++ static private

<分区>

如何从构造函数或通常从其他成员函数使用和修改 s_member 私有(private)静态变量?

这是我试过的。

嗯:

#ifndef A_H
#define A_H

#include <set>

class A
{
    public:
        A();
        virtual ~A();

    private:
        static std::set<int> s_member;
};

#endif

a.cpp:

#include "a.h"

A::A()
{
    A::s_member.insert(5); // It causes error.
}

我收到这个错误:

/tmp/ccBmNUGs.o: In function `A::A()': a.cpp:(.text+0x15): undefined
 reference to `A::s_member' collect2: error: ld returned 1 exit status

最佳答案

您已经声明了 A::s_member 但还没有定义它。要定义它,请将下面的代码放在类之外:

std::set<int> A::s_member;

例如:

std::set<int> A::s_member;

A::A()
{
  // ...
}

问题与访问和private/public无关。

关于c++ - 如何通过类构造函数访问私有(private)静态成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324433/

相关文章:

c++ - Box2D:在 Helloworld.cpp 或类似的基本程序中使用 debugdraw?

c++ - 从这个对象的方法开始的线程中销毁类对象的最佳实践

写入图像文件时出现 C++ fwrite 访问冲突

java - 我可以在 Java 中使用除法结果设置最终变量吗?

Javascript 不调用原型(prototype)方法

c++ - 在 C++ 中截断文件

c++ - 为什么要使用静态方法来使用此回调?

Java初始化顺序错误

c# - 从另一个文件访问私有(private)类

java - 私有(private)方法的动态绑定(bind) : Java vs. C++