このようなヘッダー ファイルで定義されたテンプレート クラスがあります。ここでは、静的変数も定義しています。
#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;
}
次のように、関数 f1() を別の cpp ファイルに実装しました。
void f1()
{
MyClass<int> a;
a.f();
cout<<"F1: " <<count <<"\n";
}
これを VC6 でコンパイルすると、「F1:0 Main:2」という出力が得られました。これはどのように可能ですか?また、静的変数をテンプレートと一緒に使用したい場合、一般的にどのように処理すればよいですか?