#include <map>
#include <iostream>
template <typename T>
class A
{
static std::map<int, int> data;
public:
A()
{
std::cout << data.size() << std::endl;
data[3] = 4;
}
};
template <typename T>
std::map<int, int> A<T>::data;
//std::map<int, int> A<char>::data;
A<char> a;
int main()
{
return 0;
}
Quel est le problème avec cela? Sans instanciation explicite, il casse à C++ modèle membre statique instantiation
data[3] = 4;L'instanciation explicite résout le problème mais le programme se brise après
std::cout << data.size() << std::endl;ce qui signifie que le modèle de classe statique memeber
data
a été instancié.
Quel compilateur? Je ne pense pas que ce soit ta faute. – Potatoswatter
Cela compile bien en utilisant VS2010. – linuxuser27
J'utilise vs2008 et il compile en effet mais le programme se casse aux données de ligne [3] = 4 – mrs