У меня есть класс шаблона, определенный в файле заголовка вроде этого. Здесь я также определил статическую переменную:
#ifndef TEST1_H_
#define TEST1_H_
void f1();
static int count;
template <class T>
class MyClass
{
public:
void f()
{
++count;
}
};
#endif
И я определил функцию main() в другом файле cpp следующим образом:
int main(int argc, char* argv[])
{
MyClass<int> a;
a.f();
f1();
cout<<"Main:" << count << "\n";
return 0;
}
Я реализовал функцию f1() в другом файле cpp следующим образом:
void f1()
{
MyClass<int> a;
a.f();
cout<<"F1: " <<count <<"\n";
}
Когда я скомпилировал это с помощью VC6, я получил вывод как "F1: 0 Main: 2". Как это возможно? Кроме того, в целом, как я должен обрабатывать, если я хочу использовать статические переменные вместе с шаблонами?