Alors voilà, j'ai deux problèmes que je n'arrive pas à comprendre malgré mes nombreuses recherches sur google.
Le premier est que je n'arrive pas à définir un élément dans une map.
map<string,Weapon> WD;//WeaponDatabase
//on déclare WD dans databases.h
//pour qu'elle soit accessible dans tout le programme
//---
//on la remplit dans databases.cpp
//c'est ca qu'il faut faire si j'ai bien compris
WD["SteelSword_lvl_12"]=Weapon("Steel Sword",20);
Et ca me donne cette erreur:
databases.cpp:39: error: expected constructor, destructor, or type conversion before '=' token
databases.cpp:39: error: expected `,' or `;' before '=' token
Weapon(string,int) est bel et bien un constructeur .
class Weapon
{
public:
Weapon();
Weapon(string,int);
void set_name(string);
void set_damage(int);
string name;
int damage;
};
Mon deuxième problème est le suivant.
Dans un autre fichier, types_primary.cpp, je fait un include "databases.h".
Or dans le linking il link types_primary.cpp d'abord puis databases.cpp après.
ca me donne l'erreur suivante:
.objs\databases.o:databases.cpp:(.bss+0x0): multiple definition of `WD'
.objs\types_primary.o:types_primary.cpp:(.bss+0x0): first defined here
bizarre...
bon le problème de la déclaration de la map s'est auto-règlé... j'ai réecrit le code.
Mais j'ai toujours cette erreure:
.objs\databases.o:databases.cpp:(.bss+0x0): multiple definition of `WD'
.objs\types_primary.o:types_primary.cpp:(.bss+0x0): first defined here
Je ne fait que deux includes de "databases.h", dans databases.cpp et types_primary.cpp.
j'ai souvent eu ce problème et il était du aux oubli de #ifndef blabla... #define blabla...
pourtant ils sont la.
Utilise le namespace globale pour déclarer ta variable (dans un header que tu inclus dans tous les fichier ayant besoin de cette variable), et initialise la une fois. (Cf FAQ C++ developpez -> namespace anonyme.)
Deux problèmes
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html