头文件

#ifndef H_MODEL_UTIL
#define H_MODEL_UTIL

#include "Mesh.h"

Mesh *kingHigh;

void InitModel();

#endif


源文件

#include "stdafx.h"
#include "ResourceLoader.h"
#include "ModelUtil.h"

void InitModel()
{
    ::kingHigh  = new Mesh();
}


编译器输出:

1>Game.obj : error LNK2005: "class Mesh * kingHigh" (?kingHigh@@3PAVMesh@@A) already defined in Cube.obj

1>ModelUtil.obj : error LNK2005: "class Mesh * kingHigh" (?kingHigh@@3PAVMesh@@A) already defined in Cube.obj

1>C:\Users\Anthony\Desktop\C++ Learning\Extra\Rubiks Chess\Debug\Rubiks Chess.exe : fatal error LNK1169: one or more multiply defined symbols found


我正在尝试初始化全局变量,但我不断收到此错误。有没有简单的解决方案?

最佳答案

错误不是您初始化网格的方式,而是在声明中。您的头文件应将mesh声明为外部

 extern Mesh *kingHigh;


并在您的.cpp文件中声明网格

 Mesh *kingHigh;


它必须防止您得到多重定义!

关于c++ - 初始化全局变量时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18243222/

10-12 16:02