Tengo esta clase con parámetros de configuración variables. Quiero incluirlo en otras clases: JugadorHumano
, JugadorIA
, Main
, PartidaClasica
, PartidaMision
.Error de enlace al declarar variables estáticas públicas en C++
#pragma once
class Configuracion
{
public:
static int MAX_ATAQUES;
static int DIV_TERRITORIOS;
};
int Configuracion::MAX_ATAQUES = 5;
int Configuracion::DIV_TERRITORIOS = 3;
Lo que quiero es poder modificar o leer los valores de las otras clases. No puedo declarar una variable estática y definirla en la declaración. No puedo dejar que las variables sin definición, ya sea porque obtengo errores "Externos no resueltos".
1>JugadorIA.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>JugadorIA.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>Main.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>Main.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>PartidaClasica.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>PartidaClasica.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>PartidaMision.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>PartidaMision.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
([email protected]@@2HA) already defined in JugadorHumano.obj
1>D:\Leire\My Dropbox\Carpetas compartidas\Compartidos Victor\Practicas POO II\P3\P3M10\Debug\P3M10.exe : fatal error LNK1169: one or more multiply defined symbols found
¿Qué debo hacer para evitar esta redefinición que obtengo? No puedo resolverlo y no puedo encontrar un problema similar.
Si no desea modificarlos, puede hacerlos const. Todos los nombres de mayúsculas suelen indicar const. –
Muchas gracias por la respuesta rápida, ¡eso lo resolvió! – Zhertal
@armen: Me salvaste el día. Ahora necesito volver y leer sobre la unidad de traducción. –