À l'aide des variables statiques ainsi que les modèles

J'ai un modèle de classe définie dans un fichier d'en-tête comme ça. Ici, j'ai défini une variable statique ainsi:

#ifndef TEST1_H_
#define TEST1_H_

void f1();

static int count;

template <class T>
class MyClass
{
public:

    void f()
    {
        ++count;
    }


};

#endif

Et j'ai défini la fonction main() dans un autre fichier cpp comme ceci:

int main(int argc, char* argv[])
{
    MyClass<int> a;
    a.f();
    f1();

    cout<<"Main:" << count << "\n";

    return 0;
}

J'ai implémenté la fonction f1() dans un autre fichier cpp comme ceci:

void f1()
{
    MyClass<int> a;
    a.f();

    cout<<"F1: " <<count <<"\n";
}

Lorsque j'ai compilé ce à l'aide de VC6, j'ai obtenu le résultat que "F1:0 main:2". Comment est-ce possible? Aussi, en général, que dois-je faire si je veux utiliser les variables statiques ainsi que les modèles?

InformationsquelleAutor Naveen | 2009-03-03