Solución:
Encabezamiento:
class XXX {
private:
static std::map<X,Y> the_map; // declares static member
// ...
Archivo de implementación:
std::map<X,Y> XXX::the_map; // defines static member
Eso insertará una llamada al constructor para su mapa en el código de inicialización de su programa (y un destructor en la limpieza). Sin embargo, tenga cuidado: el orden de constructores estáticos como este entre diferentes unidades de traducción no está definido.
¿Qué tal esto (si te entiendo correctamente):
std::map<T,T2> YourClass::YourMember = std::map<T,T2>();
Si tu declarar en la definición de clase, entonces tienes que definir en la implementación:
--- test.h ---
// includes and stuff...
class SomeClass
{
private:
static std::map<int,std::string> myMap;
};
--- test.cpp ---
std::map<int,std::string> SomeClass::myMap; // <-- initialize with the map's default c'tor
También puede proporcionar una inicialización:
std::map<int,std::string> SomeClass::myMap = std::map<int,std::string>(myComparator);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)