重载构造函数和变量传递的问题
Trouble with overloaded constructors and variable passing
#include <iostream>
#include <string>
class Date
{
public:
Date(int, int, int);
Date(std::string, int, int);
void print();
void printFullDate();
int getMonth();
int getDay();
int getYear();
void setMonth(int);
void setDay(int);
void setYear(int);
private:
int mm,dd,yy;
std::string mstr;
};
这是我的类日期的头文件
以下是实现
#include <iostream>
#include "Date.h"
using namespace std;
Date::Date(int mm, int dd, int yy)
{
if(mm < 1 || mm > 12 )
{
cout << "Please Enter a Valid Month (1-12)";
cin >> mm;
}
if(mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12)
{
if(dd < 1 || dd > 31)
{
cout << "Please Enter a Valid Date For the Month Entered(1-31)";
cin >> dd;
}
}
if(mm == 4 || mm == 6 || mm == 9 || mm == 11)
{
if(dd < 1 || dd >30)
{
cout << "Please Enter a Valid Date for the Month Entered(1-30)";
cin >> dd;
}
}
if ( (yy % 4 == 0 && yy % 100 != 0) || ( yy % 400 == 0))
{
if(mm == 2)
{
if( dd < 1 || dd > 29)
{
cout << "Please Enter a Valid Date for the Month Entered(1-29)";
cin >> dd;
}
}
}
else
{
if(mm == 2)
{
if(dd < 1 || dd > 28)
{
cout << "Please Enter a Valid Date for the Month Entered(1-28)";
cin >> dd;
}
}
}
if (yy < 1)
{
cout << "Please Enter a Valid Date of the era AD";
cin >> yy;
}
switch(mm)
{
case 1:
mstr = "January";
break;
case 2:
mstr = "February";
break;
case 3:
mstr = "March";
break;
case 4:
mstr = "April";
break;
case 5:
mstr = "May";
break;
case 6:
mstr = "June";
break;
case 7:
mstr = "July";
break;
case 8:
mstr = "August";
break;
case 9:
mstr = "September";
break;
case 10:
mstr = "October";
break;
case 11:
mstr = "November";
break;
case 12:
mstr = "December";
break;
}
}
Date::Date(string mstr, int dd, int yy)
{
}
void Date::print()
{
cout << "MM/DD/YYYY: " << mm << "/" << dd << "/" << yy << endl;
}
void Date::printFullDate()
{
cout << "Month DD, YYYY: " << mstr << " " << dd << ", " << yy << endl;
cout << "**********" << endl << endl;
}
void Date::setDay(int day)
{
dd = day;
}
void Date::setMonth(int month)
{
mm = month;
}
void Date::setYear(int year)
{
yy = year;
}
int Date::getDay()
{
return dd;
}
int Date::getMonth()
{
return mm;
}
int Date::getYear()
{
return yy;
}
当我调用函数 Date(int,int,int( 时,它会很好地运行所有内容。但是,当我调用 print 函数时,变量不会保留构造函数中分配的值。当构造函数更正月、日或年时,该数据不会在打印时输出。而是输出原始未更改的值。我相信一旦传递给构造函数的变量对于整个类应该保持不变。 我迷路了。任何帮助将不胜感激。
那是因为你的构造函数的参数...
Date::Date(int mm, int dd, int yy)
。是与具有相同名称的类成员变量不同的变量。 我通常用尾随下划线命名成员,例如 mm_, dd_, yy_
- 然后在构造函数的末尾,您可以将其分配给...
mm_ = mm; dd_ = dd; yy_ = yy; mstr_ = mstr;
相关文章:
- 为"adjacent"变量赋值时出现问题
- C++理解计算字符变量的问题
- 在通知提升间处理条件变量时未按住锁会导致问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 将十六进制值设置为用于填充的字符变量时出现问题
- 初学者问题:如何访问此变量?
- 关于仅正确使用二传手和变量的问题
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 在 for 循环中更新两个变量时遇到问题C++
- 为<vtkDataArray> VTK 非结构化网格声明 vtkSmartPointer 类型的变量时出现问题
- 模板类编译问题与 typedef 变量
- 简单的问题 - 如何从单独的"结构"内的'class'访问变量?
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 初学者问题:C++指针/地址 - 和变量之后不是以前?
- 关于读取有效 c++ 第 4 项(将非局部静态变量替换为局部静态变量)的问题
- 我有几个关于参考变量的问题
- 面临在 if 语句之外打印变量数据的问题 完成使用 Qt 编程
- OpenCV C++ Mat 类行和列 - 它们是成员变量(和相关问题)吗?
- 指向动态内存中结构中的变量时出现问题