C ++类成员初始化&构造函数定义

时间:2015-03-03 23:41:53

标签: c++ c++11

您好我开始学习C ++,目前我正在测试成员初始化程序,我编写了这个简单的代码:

#include <iostream>
#include <string>

using namespace std;

class Person
{
public:
    Person();
    ~Person();
private:

    string p_name;
    string p_surname;
    int p_age;

};

Person::Person(string name, string surname, int age) : p_name(name), p_surname(surname), p_age(age)
{


}

Person::~Person()
{
}

class MyClass
{
public:
    MyClass(int value) : m_value(value)
    {
    }
private:
    int m_value;
};

int main()
{
    return 0;
}

但是在Person类中我收到以下错误

  

错误1错误C2511:'Person :: Person(std :: string,std :: string,int)':   找不到重载的成员函数   '人'c:\ users \ syd \ documents \ visual studio   2013 \ projects \ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp 19 1 ConsoleApplication1

同样在第二节课中没有错误。如果我没弄错的话,我在Person类中以错误的方式声明构造函数,并且解释器认为我正在重载一个丢失的方法?我确定这样的错误对大多数人来说可能是愚蠢的,但如果有人能用简单的语言解释我做错了什么,我将不胜感激。

2 个答案:

答案 0 :(得分:5)

Person()的声明与Person(string name, string surname, int age)的定义不符。

在您的班级声明中,将人员更改为

public:
  Person(string name, string surname, int age);

答案 1 :(得分:4)

你需要在类Person中放置构造函数的原型(带参数的原型)而不是没有参数的当前原型

class Person
{
public:
    Person(string name, string surname, int age);
    ~Person();
private:

    string p_name;
    string p_surname;
    int p_age;

};