2014-09-25 3 views
-2

C++ Visual Studio 2008에서 getter/setter 코드를 실행하려고하는데 헤더 파일, 구현 파일 및 기본 파일이 있습니다. 주에는 클래스 개체 P1을 인쇄하려고하는 인쇄 기능 (P1.print();)이 있습니다. PersonType의 구성원이 아닌 print()이라는 오류가 발생합니다. 내가 헤더에 print(); 무효 선언 할 때, 나는 3 오류가 -----print() 클래스의 멤버가 아니십니까?

Persontest.obj : error LNK2005: _main already defined in proj1.obj ----- 
Persontest.obj : error LNK2019: unresolved external symbol "public: void __thiscall 
Persontype::print(void)" ([email protected]@@QAEXXZ) referenced in function _main ----- fatal error LNK1120: 1 unresolved externals. 

누군가가 PLS 나에게이 문제를 해결하는 데 도움이 될 수 있습니다거야?

Persontype.h (헤더 파일) :

#ifndef H_Persontype 
#define H_Persontype 

#include <iostream> 
#include <string> 

using namespace std; 



class Persontype{ 

public: 
Persontype(); 

Persontype(string fn, string mn, string ln, char g); 

//setter 
void setfirstName(string fn); 
void setmiddleName(string mn); 
void setlastName(string ln); 
void setGender(char g); 

//getter 
string getfirstName() const; 
string getlastName() const; 
string getmiddleName() const; 
char getGender() const; 

private: 
string firstName; 
string middleName; 
string lastName; 
char gender; 


}; 

#endif/ 

Person.cpp (실행 파일) :

#include <iostream> 
#include <string> 
#include "Persontype.h" 
using namespace std; 






//default constructor 
Persontype::Persontype() 
{ 
firstName = "Me"; 
middleName = "My"; 
lastName = "Mine"; 
gender = 'X'; 
} 

//specific constructor 
Persontype::Persontype(string fn, string mn, string ln, char g){ 
firstName = fn; 
middleName = mn; 
lastName = ln; 
gender = g; 
} 

//setters 
void Persontype::setfirstName(string fn) 
{ 
firstName = fn; 
} 

void Persontype::setmiddleName(string mn) 
{ 
middleName = mn; 
} 

void Persontype::setlastName(string ln) 
{ 
lastName = ln; 
} 

void Persontype::setGender(char g) 
{ 
gender = g; 
} 

//getters 
string Persontype::getfirstName() const 
{ 
    return firstName; 
} 

string Persontype::getmiddleName() const 
{ 
    return middleName; 
} 

string Persontype::getlastName() const 
{ 
    return lastName; 
} 

char Persontype::getGender() const 
{ 
return gender; 
} 

Persontest.cpp (기본 파일) :

#include "Persontype.h" 

int main(){ 

Persontype P1("tom","smith","alice",'m'); 

P1.print(); 
} 
+0

오류 메시지는 실제로 더 명확하지 않을 수 있습니다.'print()'라는 메서드가 없습니다. 즉,'Persontype :: print()'를 구현해야합니다. –

+0

문자열을 const 참조로 함수에 전달합니다. 클래스의 멤버 인 경우 const 참조로 반환 할 수도 있습니다. –

답변

1

당신에게 , 물론, 모두Persontype 클래스 선언에 선언해야합니다.

void print() const; 

및 .cpp 파일에 정의 : 그는 헤더 여러 main()에 대한

void Persontype::print(void) const 
{ 
    cout << "My name is " << getfirstName() << ", I live on the second floor\n"; 
} 

오류가 print()와는 아무 상관이없는, 그건 당신이 코드 중 하나를하고있는 다른 오류가있어 어떤 당신이 보여주지 않거나 당신의 프로그램을 어떻게 만드는지.

+0

위와 같이 .cpp-ERROR에서 시도했습니다. 발견 된 하나 이상의 곱셈 기호와 abc.obj에 이미 정의 된 메인 ??? – Leonne

관련 문제