Zhe*_*tal 9 c++ linker static lnk2005
我有这个具有可变配置参数的类.我希望把它列入其他类:JugadorHumano,JugadorIA,Main,PartidaClasica,PartidaMision.
#pragma once
class Configuracion
{
public:
static int MAX_ATAQUES;
static int DIV_TERRITORIOS;
};
int Configuracion::MAX_ATAQUES = 5;
int Configuracion::DIV_TERRITORIOS = 3;
Run Code Online (Sandbox Code Playgroud)
我想要的是能够修改或读取其他类中的值.我不能声明一个静态变量并在声明中定义它.我不能让这些变量没有定义,因为我得到"Unresolved External"错误.
1>JugadorIA.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
(?MAX_ATAQUES@Configuracion@@2HA) already defined in JugadorHumano.obj
1>JugadorIA.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
(?DIV_TERRITORIOS@Configuracion@@2HA) already defined in JugadorHumano.obj
1>Main.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
(?MAX_ATAQUES@Configuracion@@2HA) already defined in JugadorHumano.obj
1>Main.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
(?DIV_TERRITORIOS@Configuracion@@2HA) already defined in JugadorHumano.obj
1>PartidaClasica.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
(?MAX_ATAQUES@Configuracion@@2HA) already defined in JugadorHumano.obj
1>PartidaClasica.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
(?DIV_TERRITORIOS@Configuracion@@2HA) already defined in JugadorHumano.obj
1>PartidaMision.obj : error LNK2005: "public: static int Configuracion::MAX_ATAQUES" \
(?MAX_ATAQUES@Configuracion@@2HA) already defined in JugadorHumano.obj
1>PartidaMision.obj : error LNK2005: "public: static int Configuracion::DIV_TERRITORIOS" \
(?DIV_TERRITORIOS@Configuracion@@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
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能避免这种重新定义?我无法弄清楚,我找不到类似的问题.
Arm*_*yan 17
您应该在cpp文件中编写定义,否则,一旦将头文件包含到多个C++文件(翻译单元)中,您将得到重新定义错误.#pragma曾经只在一个翻译单元内运行.所以你需要一个包含以下内容的Configuration.cpp文件
#include "Configuracion.h"
int Configuracion::MAX_ATAQUES = 5;
int Configuracion::DIV_TERRITORIOS = 3;
Run Code Online (Sandbox Code Playgroud)
此外,如果您的类仅包含静态成员,则可以选择考虑使用命名空间而不是类.
| 归档时间: |
|
| 查看次数: |
9684 次 |
| 最近记录: |