2013-08-14 5 views
0

HEADER FICHIERProblèmes d'initialisation des variables globales

#ifndef H_MODEL_UTIL 
#define H_MODEL_UTIL 

#include "Mesh.h" 

Mesh *kingHigh; 

void InitModel(); 

#endif 

SOURCE FICHIER

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

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

sortie du compilateur:

1>Game.obj : error LNK2005: "class Mesh * kingHigh" ([email protected]@[email protected]@A) already defined in Cube.obj 

1>ModelUtil.obj : error LNK2005: "class Mesh * kingHigh" ([email protected]@[email protected]@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 

Je suis en train d'initialiser une variable globale mais je continue à obtenir cette erreur. Y-a-t-il une solution simple?

Répondre

5

L'erreur n'est pas dans la façon dont vous init maillez, c'est dans votre déclaration. votre fichier d'en-tête doit déclarer comme maillage externe

extern Mesh *kingHigh; 

et déclarer maillage dans votre fichier .cpp

Mesh *kingHigh; 

il doit empêcher la définition multiple que vous avez!

1

Vous avez redéfini Mesh dans InitModel.kinghigh est global si la suppression déjà defined.just le contenu de InitModel.and vous pouvez également écrire extern Mesh *kinghigh