gpt4 book ai didi

c++ - 如何在我的成员函数中包含默认参数?

转载 作者:行者123 更新时间:2023-11-28 01:24:28 24 4
gpt4 key购买 nike

我正在制作一个包含 Date 类对象的程序。当我将类(class)日期打印到屏幕上时,有三个选项默认 (M/D/Y)、长(月、日、年)和两位数 (mm/dd/yy)。我已经解决了每个选项的代码,但是当我调用 SetFormat() 函数时我无法更改格式。我希望 SetFormat 的默认参数为“D”,这样当没有指定参数时它处于默认形式,但是当在 main 中调用 SetFormat() 时它会切换形式。

这是我的 .cpp 文件的一部分:

void Date::Show()
{
if (SetFormat('D'))
{
cout << month << '/' << day << '/' << year;
}
if (SetFormat('T'))
{
if(month < 10){
cout << 0 << month << '/';
}else
cout << month << '/';
if (day < 10) {
cout << 0 << day << '/' << (year % 100);
} else
cout << day << '/' << (year % 100);
}
if (SetFormat('L'))
{
LongMonth();
cout << " " << day << ", " << year;
}
}

bool Date::SetFormat(char f)
{
format = f;
if (f == 'T')
return true;
if (f == 'D')
return true;
if (f == 'L')
return true;
else
return false;
}

这是我的 .h 文件的一部分:

class Date{
public:
explicit Date(int m = 1, int d = 1, int y = 2000);
void Input();
void Show();
bool Set(int m, int d, int y);
bool SetFormat(char f = 'D');

程序现在有点忽略我的“if”语句,当我在 main 中调用函数 SetFormat() 时,它会背对背打印所有 3 种格式。

最佳答案

问题是您将 SetFormat() 用作“设置”函数和“获取”函数。我建议有两个功能。

void SetFormat(char f);
char GetFormat() const;

并适本地使用它们。

Date::Show() 中,使用 GetFormat() 或简单地使用成员变量的值。
main 中,使用 SetFormat()

void Date::Show()
{
// Need only one of the two below.
// char f = GetFormat();
char f = format;
if (f == 'D')
{
cout << month << '/' << day << '/' << year;
}
else if (f == 'T')
{
if(month < 10){
cout << 0 << month << '/';
}else
cout << month << '/';
if (day < 10) {
cout << 0 << day << '/' << (year % 100);
} else
cout << day << '/' << (year % 100);
}
else if ( f == 'L')
{
LongMonth();
cout << " " << day << ", " << year;
}
}

void Date::SetFormat(char f)
{
format = f;
}

char Date::GetFormat() const
{
return format;
}

main 中:

Date date;
date.SetFormat('L');
date.Show();

当然,您应该检查 SetFormat()Show() 以确保格式有效,如果不是这样则采取一些措施。

关于c++ - 如何在我的成员函数中包含默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com