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();
}
오류 메시지는 실제로 더 명확하지 않을 수 있습니다.'print()'라는 메서드가 없습니다. 즉,'Persontype :: print()'를 구현해야합니다. –
문자열을 const 참조로 함수에 전달합니다. 클래스의 멤버 인 경우 const 참조로 반환 할 수도 있습니다. –