Tengo un static map
que es un miembro de datos private
. ¿Cómo lo inicializo en el archivo de implementación para que sus contenedores iniciales estén vacíos? No es const
. Es importante que no haya nada en este contenedor al inicio.Inicializar un mapa privado estático como vacío
Respuesta
Cabecera: archivo
class XXX {
private:
static std::map<X,Y> the_map; // declares static member
// ...
Implementación:
std::map<X,Y> XXX::the_map; // defines static member
que insertará una llamada al constructor para su mapa en el código de inicialización del programa (y un destructor en la limpieza). Sin embargo, ten cuidado: el orden de constructores estáticos como este entre diferentes unidades de traducción no está definido.
¿Qué hay de esto (si he entendido bien):
std::map<T,T2> YourClass::YourMember = std::map<T,T2>();
O simplemente 'std :: map
@MikeSeymour: Exactamente. Solo aclarando que podrías dar argumentos de constructor si quisieras. – Linuxios
si se define en la definición de clase, entonces usted tiene que declarar 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
Se puede utilizar una inicialización, también :
std::map<int,std::string> SomeClass::myMap = std::map<int,std::string>(myComparator);
Nitpick: Eso sería/declaró/en la clase y/define/en la implementación. – Grault
- 1. C++ - Inicializando un mapa estático como miembro de clase privada
- 2. C++ 11 inicializar el mapa
- 3. ¿Es esto un error? MissingMethodException acceder a un método estático privado con 0 como parámetro
- 4. Forma correcta de inicializar un mapa y eliminar en C++
- 5. C# privado, estático y de solo lectura
- 6. Cómo inicializar correctamente el Mapa de Mapa de Mapa?
- 7. Establecer el valor del campo estático privado
- 8. ¿Cómo invoco un método estático privado usando reflection (Java)?
- 9. Cómo coger excepción lanzada al inicializar un miembro estático
- 10. ¿Cómo defino dinámicamente un método como privado?
- 11. Implementación Singleton con el constructor estático vacío
- 12. ¿Qué devuelve un IQueryable vacío como cuando está vacío?
- 13. Como recuperar un mapa estático que muestra los límites de la ciudad o municipio
- 14. ¿Cómo puedo inicializar un registro declarado como una variable local?
- 15. La mejor manera de crear un mapa vacío en Java
- 16. accediendo a un mapa estático de una función de miembro estático - falla de segmentación - C++
- 17. ¿Accediendo a un miembro privado de un parámetro dentro de un método estático?
- 18. ¿Por qué no puedo inicializar el campo estático en C++
- 19. ¿Cuál es la diferencia entre el vacío estático en línea y el vacío?
- 20. PHP trató "0" como vacío?
- 21. Definir un mapa como constante en java
- 22. ¿Cómo implemento mi propio campo estático vacío o cero correctamente?
- 23. Matriz como miembro privado de la clase
- 24. ¿Cómo inicializar un dict con claves de una lista y un valor vacío en Python?
- 25. Mostrar mapa como OpenStreetMap
- 26. Definición de un color como un recurso estático
- 27. inicializar mapa <cadena, vector <string>>
- 28. ¿Cómo ejecutar un método estático privado con parámetros opcionales a través de la reflexión?
- 29. ¿Cómo obtener el valor de un campo estático privado de una clase?
- 30. Inicializar un miembro estático en una plantilla de clase totalmente especializada
Dice que mi mapa es privado y, por lo tanto, la inicialización predeterminada en la parte superior de mi archivo CC no es válida. –
Publica tu código, estás cometiendo un error en alguna parte. –
Tuve que mover mi typedef al público, pero mantuve mi miembro privado. Eso lo solucionó –