Tôi có lớp này với các tham số cấu hình biến. Tôi muốn đưa nó vào các lớp khác: JugadorHumano
, JugadorIA
, Main
, PartidaClasica
, PartidaMision
.Lỗi liên kết khi khai báo các biến tĩnh công cộng trong C++
#pragma once
class Configuracion
{
public:
static int MAX_ATAQUES;
static int DIV_TERRITORIOS;
};
int Configuracion::MAX_ATAQUES = 5;
int Configuracion::DIV_TERRITORIOS = 3;
Điều tôi muốn là có thể sửa đổi hoặc đọc các giá trị từ các lớp khác. Tôi không thể khai báo một biến tĩnh và định nghĩa nó trong khai báo. Tôi không thể để các biến đó không có định nghĩa vì tôi gặp lỗi "Chưa được giải quyết bên ngoài".
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
Tôi nên làm gì để tránh định nghĩa lại tôi nhận được? Tôi không thể hình dung ra và tôi không thể tìm thấy một vấn đề tương tự.
Nếu bạn không muốn sửa đổi chúng, bạn có thể làm cho chúng const. Tất cả các tên viết hoa thường chỉ ra const. –
Cảm ơn bạn rất nhiều vì câu trả lời nhanh, đã giải quyết được! – Zhertal
@armen: Bạn đã cứu ngày của tôi. Bây giờ tôi cần quay lại và đọc về đơn vị dịch thuật. –