我不知道是否可以这样做,但是我尝试了几种方法,但似乎没有任何效果。基本上,我需要从几个包含相同类定义的文件中访问相同的静态成员。

// 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;

需要完全在一个源文件中,而不在 header 中。因此,将其从S.h移到S.cpp

09-11 20:00
查看更多