错误:“没有匹配的函数调用Date::Date()”

我尝试为类实现构造函数Person(请参阅文章末尾的代码)。Codeblocks 给出了第 37 行的错误(即const Date &date)):

error: no matching function for call to 'Date::Date()'

为什么Date要调用构造函数?如何修复错误?

class Date
{
    public:
        Date(int day, int month, int year);
        int GetYear() const;
    private:
        int Day;
        int Month;
        int Year;
};

Date::Date(int day, int month, int year){

    Day = day;
    Month = month;
    Year = year;
}

class Person
{
    public:
        Person(const string &name, const string &address, const Date &date);
        string GetAddress() const;
        string GetName() const;
    private:
        string Name;
        string Address;
        Date DateOfBirth;
};

Person::Person(const string &name,
               const string &address,
               const Date &date)
{
    Name = name;
    Address = address;
    DateOfBirth = date;
}

回答

之所以调用它,是因为成员输入构造函数体之前被初始化——在你的Person构造函数中,你是分配给成员,而不是初始化它们。
由于您没有显式初始化成员,因此它们首先被默认初始化。

使用初始化列表进行初始化:

Person::Person(const string &name,
               const string &address,
               const Date &date)
    : Name(name),
      Address(address),
      DateOfBirth(date)
{
    // Nothing needs to be done here.
}


以上是错误:“没有匹配的函数调用Date::Date()”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>