我有這個類,其中包含變量配置參數。我想將它包含在其他類中:JugadorHumano
,JugadorIA
,Main
,PartidaClasica
,PartidaMision
。在C++中聲明公共靜態變量時出現鏈接錯誤
#pragma once
class Configuracion
{
public:
static int MAX_ATAQUES;
static int DIV_TERRITORIOS;
};
int Configuracion::MAX_ATAQUES = 5;
int Configuracion::DIV_TERRITORIOS = 3;
我想要的是能夠修改或讀取其他類的值。我不能聲明一個靜態變量並在聲明中定義它。如果沒有定義,我不能讓這些變量因爲我得到「未解決的外部」錯誤。
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
我應該怎麼做才能避免這種重新定義?我無法弄清楚,我也找不到類似的問題。
如果你不想修改它們,你可以使它們爲const。所有大寫字母名稱通常表示const。 –
非常感謝您的快速回答,解決了它! – Zhertal
@armen:你救了我的一天。現在我需要回去閱讀翻譯部門。 –