运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

如何在C源文件之间共享静态变量?

运维开发网 https://www.qedev.com 2020-04-16 21:14 出处:网络 作者:运维开发网整理
我不知道是否有可能做到这一点,但我尝试了几种方法似乎没有任何效果.基本上我需要从几个包含相同类定义的文件中访问相同的静态成员. // Filename: S.h class S { public: static int foo; static void change(int new_foo) { foo = new_foo; } }; int S::
我不知道是否有可能做到这一点,但我尝试了几种方法似乎没有任何效果.基本上我需要从几个包含相同类定义的文件中访问相同的静态成员.

// Filename: S.h

class S {
public:
    static int foo;

    static void change(int new_foo) {
        foo = new_foo;
    }

};

int S::foo = 0;

然后在类定义(其他.cpp文件)中我有:

// Filename: A.h

#include "S.h"    

class A {
public:
    void do_something() {
        S::change(1);
    }
};

在另一个文件中:

// Filename: program.cpp

#include "S.h"
#include "A.h"

int main (int argc, char * const argv[]) {
    A a = new A();
    S::change(2);        

    std::cout << S::foo << std::endl;

    a->do_something();

    std::cout << S::foo << std::endl;

}

现在,我希望第二个函数调用将S :: foo更改为1,但输出仍然是:

2

A.h文件是否创建了静态类的本地副本?

谢谢

托马索

这一行:

int S::foo = 0;

需要只在一个源文件中,而不是在标题中.所以将它从S.h移到S.cpp.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消