【问题标题】:Access static variable from static function [duplicate]从静态函数访问静态变量[重复]
【发布时间】:2013-01-31 19:30:15
【问题描述】:

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

流程

  • 课程已启动
  • 构造函数将变量设置为使用必须是静态的内部函数的东西
  • 稍后我打印该变量

示例代码

#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

【问题讨论】:

    标签: c++ oop class static


    【解决方案1】:

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

    非静态成员变量随着包含对象的创建和销毁而创建和销毁。

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

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

    int MyClass::s;
    

    附录:

    C++17 增加了inline variables,让您的代码可以进行较小的更改:

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

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 2015-07-22
      • 2012-06-29
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多