print()不是类的成员

print() not a member of class?

本文关键字:成员 print      更新时间:2023-10-16

我正试图在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()无关,这是您在未显示的代码中或在如何构建程序中所做的其他错误。