【发布时间】:2014-11-19 21:30:11
【问题描述】:
我正在尝试在 C++ Visual Studio 2008 中运行 getter/setter 代码,并拥有我的头文件、实现文件和主文件。主要有一个打印函数(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();
}
【问题讨论】:
-
嗯,错误信息再清楚不过了——你没有一个名为
print()的方法,即你需要实现Persontype::print()。 -
通过 const 引用将字符串传递给函数。如果它们是类的成员,您甚至可以通过 const 引用返回它们。
标签: c++ function class printing main