c++ - 重载函数
问题描述
所以我有这3个功能:
void bookings(const std::string name, const Date& date)const;
void bookings(const std::string name)const;
void bookings(const Date& date)const;
我想以 3 种不同的方式使用它们。首先,如果我传递名称和日期以使用第一个函数。其次,如果我只传递名称以使用第二个函数,并且如果我只传递日期以使用第三个函数。我正在使用控制台来传递参数。有没有办法做到这一点?我写这个:
std::string event, name;
int d, m, y;
std::cout << "event: ";
std::getline(std::cin, event);
std::cout << "date: ";
std::cin >> d >> m >> y;
if (event == "")
{
bookings(Date(d, m, y));
}
else if (d > 0 && m>0 && y>0)
{
bookings(event, Date(d, m, y));
}
else
{
bookings(event);
}
但在我没有通过日期的情况下不起作用。我知道这与日期的参数有关,在这种情况下它们没有定义。有没有什么办法解决这一问题?
解决方案
您可以使用 getline 将日期作为字符串获取,而不是检查它们是否已设置:
std::string event, name;
std::string sD, sM, sY;
int d, m, y;
d = m = y = 0;
std::cout << "event: ";
std::getline(std::cin, event);
std::cout << "date: ";
std::getline(std::cin, sD);
std::getline(std::cin, sM);
std::getline(std::cin, sY);
if(!sD.empty() && !sM.empty() && !sY.empty())
{
d = atoi(sD.c_str());
m = atoi(sM.c_str());
y = atoi(sY.c_str());
}
if (event == "")
{
bookings(Date(d, m, y));
}
else if (d > 0 && m>0 && y>0)
{
bookings(event, Date(d, m, y));
}
else
{
bookings(event);
}
推荐阅读
- c# - 不能转双?加倍
- bison - YYSTYPE/YYLTYPE/yylval/yylloc 中的 S/L/l 代表什么?
- kendo-ui - 可以使用 Excel 模板“导出到 Excel”吗?
- azure - Azure 时区差异:应用程序洞察与诊断
- php - 如何使两个工作之间的延迟?
- excel - 变量未在 vlookup 中分配
- java - 如何收听 Selenium 中的 CSS 变化?
- jmeter - 杰米特 | 最大虚拟用户容量
- python - matplotlib - 如何并排绘制条形图以比较两列之间的值
- html - Angular File Upload 自定义 mat 错误问题