从静态函数访问静态变量

时间:2013-02-15 18:37:28

标签: c++ oop class static

我的函数是静态的非常重要,我需要访问和修改另一个静态/非静态类成员,以便稍后打印出来。我怎么能这样做?

流量

  • 课程已启动
  • 构造函数使用必须为静态的内部函数将变量设置为某些内容
  • 一段时间后我打印出变量

示例代码

#include <iostream>

class MyClass
{
public:
    static int s;
    static void set()
    {
        MyClass::s = 5;
    }

    int get()
    {
        return MyClass::s;
    }

    MyClass()
    {
        this->set();
    }
};

void main()
{
    auto a = new MyClass();

    a->set(); // Error

    std::cout << a->get() << std::endl; // Error

    system("pause");
}

错误

LNK2001: unresolved external symbol "public: static int MyClass::s" (?s@MyClass@@2HA)
LNK1120: 1 unresolved externals

1 个答案:

答案 0 :(得分:11)

您已声明您的静态变量,但您尚未定义

在创建和销毁包含对象时,会创建和销毁非静态成员变量。

然而,静态成员需要独立于对象创建而创建。

添加此代码以创建int MyClass::s

int MyClass::s;

<强>附录:

C ++ 17添加inline variables,允许您使用较小的更改进行编码:

static inline int s;  // You can also assign it an initial value here
       ^^^^^^