2010-10-01 19 views
1

J'ai un fichier:C++ redéfinition variables

variableinclude.h

#ifndef _variableinclude_h_ 
#define _variableinclude_h_ 

AClass* variable1; 
int* variable2; 

#endif 

Mais j'inclure ce fichier dans un autre deux différents:

- atest1.h 

- atest2.h 

Le problème est le suivant: Variable redéfinition

Comment éviter ça ???

+0

Vous obtenez une erreur de liaison ou une erreur de compilation? – Naveen

+1

Notez que la garde include utilise illégalement un préfixe réservé ('_v'). De plus, par convention, les macro sont majuscules. – MSalters

+0

@MSalters: Pourquoi est-ce réservé? Je pensais que seuls les doubles underscores ne devraient pas être utilisés. –

Répondre

9

EDIT2:

Bienvenue sur ODR

EDIT 1:

Faire les variables extern dans le fichier d'en-tête. Définissez-les une fois et une seule fois dans un fichier cpp, p. Ex.,

extern AClass* variable1; // assuming AClass is declared at this point. 
extern int* variable2; 

dans main.cpp à la portée de l'espace de noms.

AClass* variable1 = NULL; // assuming AClass is declared at this point. 
int* variable2 = NULL; 
+0

+1 la solution –