Ho questa classe con parametri di configurazione variabili. Voglio includerlo in altre classi: JugadorHumano
, JugadorIA
, Main
, PartidaClasica
, PartidaMision
.Errore di collegamento quando si dichiarano variabili statiche pubbliche in C++
#pragma once
class Configuracion
{
public:
static int MAX_ATAQUES;
static int DIV_TERRITORIOS;
};
int Configuracion::MAX_ATAQUES = 5;
int Configuracion::DIV_TERRITORIOS = 3;
Quello che voglio è essere in grado di modificare o leggere i valori dalle altre classi. Non posso dichiarare una variabile statica e definirla nella dichiarazione. Non riesco a lasciare che le variabili senza definizione o perché ottengo gli errori "Esterno non risolto".
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
Cosa devo fare per evitare questa ridefinizione? Non riesco a capirlo e non riesco a trovare un problema simile.
Se non si desidera modificarli, è possibile renderli const. Tutti i nomi in maiuscolo indicano in genere const. –
Grazie mille per la risposta rapida, che l'ha risolto! – Zhertal
@armen: mi hai salvato la giornata. Ora ho bisogno di tornare a leggere sull'unità di traduzione. –