我在这样的头文件中定义了一个模板类。这里我也定义了一个静态变量:
#ifndef TEST1_H_
#define TEST1_H_
void f1();
static int count;
template <class T>
class MyClass
{
public:
void f()
{
++count;
}
};
#endif
我在不同的 cpp 文件中定义了 main() 函数,如下所示:
int main(int argc, char* argv[])
{
MyClass<int> a;
a.f();
f1();
cout<<"Main:" << count << "\n";
return 0;
}
我在不同的 cpp 文件中实现了函数 f1(),如下所示:
void f1()
{
MyClass<int> a;
a.f();
cout<<"F1: " <<count <<"\n";
}
当我使用 VC6 编译它时,我得到的输出是“F1:0 Main:2”。这怎么可能?另外,一般来说,如果我想将静态变量与模板一起使用,我应该如何处理?