print()不是类的成员?

时间:2014-09-25 07:29:43

标签: c++ function class printing main

我正在尝试在C ++ Visual Studio 2008中运行getter / setter代码并拥有我的头文件,实现文件和主文件。在main中,有一个打印函数(P1.print();),它尝试打印类对象P1。我收到print()的错误,而不是Persontype的成员。当我在标题中声明void 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();
}

1 个答案:

答案 0 :(得分:1)

当然,你需要两者在标题中的Persontype类声明中声明它:

void print() const;

并在.cpp文件中定义:

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

多个main()的错误与print()无关,这是您在未显示的代码中执行的其他错误或其他错误你如何建立自己的计划。