2014-03-31 84 views
1

我是Qt中C++程序設計中的新成員。 我做了兩個班Personnage和Arme。 我有5個文件Personnage.h,personnage.cpp,Arme.h和Arme.cppC++中的重複符號__ZN4ArmeC1Ev錯誤

Arme.h

#ifndef ARME_H 
#define ARME_H 
#include<iostream> 
class Arme 
{ 
public: 
Arme(); 
Arme(int m_idArme,std::string m_nomArme); 
void armeAffich() const; 
public: 
int idArme; 
std::string nomArme; 
}; 
#endif // ARME_H 

Arme.cpp

#include "Arme.h" 
#include<string> 
#include<iostream> 
using namespace std; 
Arme::Arme():idArme(0),nomArme(0) 
{ 

} 
Arme::Arme(int m_idArme,string m_nomArme) 
{ 
idArme=m_idArme; 
nomArme=m_nomArme; 
} 

void Arme::armeAffich() const 
{ 
cout<<"identifiant d'arme"<<idArme<<endl; 
cout<<"nom d'arme"<<nomArme<<endl; 
} 

Personnage.h

#ifndef PERSONNAGE_H 
#define PERSONNAGE_H 
#include "Arme.h" 
class Personnage 
{ 
Personnage(std::string nom,std::string prenom); 
Personnage(); 
~Personnage(); 
void affichPers() const; 
public: 
std::string nomPers; 
std::string prenomPers; 
Arme *arme; 
}; 
#endif // PERSONNAGE_H 

Personnage.cpp

#include "Arme.h" 
#include<string> 
#include<iostream> 
using namespace std; 
Arme::Arme():idArme(0),nomArme(0) 
{ 

} 
Arme::Arme(int m_idArme,string m_nomArme) 
{ 
idArme=m_idArme; 
nomArme=m_nomArme; 
} 

void Arme::armeAffich() const 
{ 
cout<<"identifiant d'arme"<<idArme<<endl; 
cout<<"nom d'arme"<<nomArme<<endl; 
} 

並在main.cpp文件中,iput兩條指令只是爲了編譯。

#include"Personnage.h" 
#include<iostream> 
using namespace std; 
int main() 
{ 
    cout<<"Hello word!"; 
    return 1; 
} 

當我編譯我得到這些錯誤:

duplicate symbol __ZN4ArmeC1Ev in: 
    Arme.o 
    Personnage.o 
duplicate symbol __ZN4ArmeC2Ev in: 
    Arme.o 
    Personnage.o 
duplicate symbol __ZN4ArmeC1EiSs in: 
    Arme.o 
    Personnage.o 
duplicate symbol __ZN4ArmeC2EiSs in: 
    Arme.o 
    Personnage.o 
duplicate symbol __ZNK4Arme10armeAffichEv in: 
    Arme.o 
    Personnage.o 
ld: 5 duplicate symbols for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [ExempleClasses] Error 1 
18:55:46: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project ExempleClasses (kit: Desktop Qt 5.2.0 clang 64bit) 
When executing step 'Make' 

任何幫助嗎?

+2

'echo'__ZN4ArmeC1Ev'| C++ filt'給出'Arme :: Arme()','Arme類的構造函數' – ccorn

回答

5

在您的訊息:

Personnage.cpp

#include "Arme.h" 
#include<string> 
#include<iostream> 
using namespace std; 
Arme::Arme():idArme(0),nomArme(0) 
{ 

} 

當然,你真的不希望repeate在Personage.cpp Arme::Arme

+0

是的,它是一個集中錯誤! – BetterEnglish

+0

這類錯誤幾乎總是......;) –