C++ Visual 工作室中的逻辑错误.阵列打印的是地址而不是内容



我在C++Visual Studios中的代码有问题。我制作了一个数组 月日来存储其中的月份天数。在带有 DaysOfTheYear 的构造函数中,我有一个字符串 month 将月份设置为一个整数,将该整数放在检查器变量中。使用该检查变量,我正在尝试打印数组的内容,但数组正在打印到我假设的变量地址。下面是代码。在第 79 行,我让它在 void 打印函数内打印数组的内容,但当然它是打印出地址。 我还没有在第 79 行制作代码,如果我输入 60 它将等于 3 月 1 日。我只是在测试该部分,以确保我在数组中打印出正确的元素。在第 13 行,我在具有 12 个元素的 DayOfYear 类中声明 MonthDays[12]。在第 136 行,我用一个月中的所有日子定义了 MonthDays 数组。我也知道与第一个构造函数一样,它工作正常,但是我应该将字符串变量和整数变量添加到新构造函数中,该构造函数可以在这种情况下以日-月格式确定日期。

我的输出如下:

-8589934060(这应该是数组的内容)第 365 天是 12 月 31 日。 如果有人能帮忙,我将不胜感激。谢谢大家阅读本文。

// This program takes a user inputted integer and converts it to a month and day
#include <iostream>
#include <string>
#include <iomanip>
#include <Windows.h>
using namespace std;
class DayOfYear
{
public:
int MonthDays[12];
int day;
static string monthName;
int checker;
DayOfYear(int dayD)
{
day = dayD;
}
DayOfYear(int days, string month)
{
day = days;
if (month == "January")
{
checker = 1;
}
else if (month == "February")
{
checker = 2;
}
else if (month == "March")
{
checker = 3;
}  
else if (month == "April")
{
checker = 4;
}
else if (month == "May")
{
checker = 5;
}
else if (month == "June")
{
checker = 6;
}
else if (month == "July") 
{
checker = 7;
}
else if (month == "August")
{
checker = 8;
}
else if (month== "September")
{
checker = 9;
}
else if (month == "October")
{
checker = 10;
}
else if (month == "November")
{
checker = 11;
}
else if (month == "December")
{
checker = 12;
}
}

void print()
{
cout << MonthDays[checker - 1];
if (day >= 1 && day <= 31)
{
cout << "Day " << day << " would be January " << day;
}
else if (day >= 32 && day <= 59)
{
cout << "Day " << day << " would be February " << day - 31;
}
else if (day >= 60 && day <= 90)
{
cout << "Day " << day << " would be March " << day - 59;
}
else if (day >= 91 && day <= 120)
{
cout << "Day " << day << " would be April " << day - 90;
}
else if (day >= 121 && day <= 151)
{
cout << "Day " << day << " would be May " << day - 120;
}
else if (day >= 152 && day <= 181)
{
cout << "Day " << day << " would be June " << day - 151;
}
else if (day >= 182 && day <= 212)
{
cout << "Day " << day << " would be July " << day - 181;
}
else if (day >= 213 && day <= 243)
{
cout << "Day " << day << " would be August " << day - 212;
}
else if (day >= 244 && day <= 273)
{
cout << "Day " << day << " would be September " << day - 243;
}
else if (day >= 274 && day <= 304)
{
cout << "Day " << day << " would be October " << day - 273;
}
else if (day >= 305 && day <= 334)
{
cout << "Day " << day << " would be November " << day - 304;
}
else if (day >= 335 && day <= 365)
{
cout << "Day " << day << " would be December " << day - 334;
}
}
};

int main()
{
int MonthDays[] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
DayOfYear tester(365,"February");
tester.print();
Sleep(5000);
}

更改:

int MonthDays[12];

自:

constexpr static int MonthDays[12] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 } ;

这将设置类的数组。

另请注意,该行

cout << MonthDays[checker - 1];

访问类的MonthDays,而不是您用main编写的

最新更新