我不确定是否可能做到这一点,但我已经尝试了几种方法,似乎都没有成功。基本上,我需要从包括相同类定义的多个文件中访问同一个静态成员。
现在,我期望第二个函数调用会将S::foo更改为1,但输出仍然是:
// 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文件是否创建了静态类的本地副本?
谢谢 Tommaso
#includes
也需要放在头文件中。 - interjay