c++ - 从静态函数访问静态变量

标签 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

最佳答案

您已经声明您的静态变量,但您还没有定义它。

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

但是,静态成员的创建需要独立于对象创建。

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

int MyClass::s;

附录:

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

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

关于c++ - 从静态函数访问静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901217/

相关文章:

C++ - 是否可以编辑 ifstream 内的数据?

c++ - 二维数组,一个已知,另一个未知

java - 模型对象应该有接口(interface)吗?

c++ - 在 C++ 中定义静态常量变量

c++ - OpenCv:无法打开 Kinect 的捕获对象

c++ - OpenGL 高度图渲染器不产生平滑的地形

python - 为什么 Python 2.7 namedtuple 实现了 __dict__?

php - 在 PHP 的 OOP 编程中设置我的类的正确方法是什么?

python - 为什么同一类的两个实例会发生相同的实例变量更改?

class - 在 SilverStripe 中存储针对类的配置设置