我正试图在C++Visual Studio 2008中运行getter/setter代码,并拥有我的头文件、实现文件和主文件。总的来说,有一个打印函数(P1.print();
)试图打印类对象P1
。我得到错误print()
不是Persontype的成员。当我在标头中声明无效print();
时,我得到3个错误----
Persontest.obj : error LNK2005: _main already defined in proj1.obj -----
Persontest.obj : error LNK2019: unresolved external symbol "public: void __thiscall
Persontype::print(void)" (?print@Persontype@@QAEXXZ) referenced in function _main ----- fatal error LNK1120: 1 unresolved externals.
有人能帮我解决这个问题吗?
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();
}
当然,您需要两个在标头中的Persontype
类声明中声明它:
void print() const;
并在.cpp文件中定义它:
void Persontype::print(void) const
{
cout << "My name is " << getfirstName() << ", I live on the second floorn";
}
关于多个main()
的错误与print()
无关,这是您在未显示的代码中或在如何构建程序中所做的其他错误。