Saltar al contenido

Inicializar un mapa privado estático como vacío

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)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *