c++ - 错误:“没有匹配的函数调用 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.
}
推荐阅读
- symfony - 在同一个树枝文件中有两种不同形式的问题
- postgresql - UPSERT - INSERT ... ON CONFLICT 失败,基于函数的索引作为 'lower()' 唯一约束
- sql - 如何根据非重复列中的逻辑消除某些列中的重复项
- python - 使用 Pandas 读取带有变量类型列的 Excel
- reactjs - 我应该提到 react-native 作为我的 react-native 库的依赖项吗?
- asp.net - Why does ReturnUrl return null parameter though it shows up in the adress bar?
- c# - 本地化文件在 MVC ASP.NET Core 2.2 中无法有效呈现 Razor 页面
- c# - 在 C# 中启用/禁用脚本无法正常工作
- python - 在Python中获取文本后的数字
- flex-lexer - 上下文相关的词法分析器