我是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'
任何幫助嗎?
'echo'__ZN4ArmeC1Ev'| C++ filt'給出'Arme :: Arme()','Arme類的構造函數' – ccorn