C++ 如何解决我的C++;头文件?

C++ 如何解决我的C++;头文件?,c++,header,C++,Header,这个程序的目标是从1到365取一个整数,并将其转换为一个月和一天。例2=一月二日,365=十二月三十一日。我以为我把所有的东西都打对了,我的思路是正确的,但是现在我的头文件中有16个错误来自第12-14行,还有1个错误来自我的类文件 我不确定这是否真的是头球还是我在其他地方搞砸了 头文件 #ifndef DAYOFYEAR_H #define DAYOFYEAR_H class DayOfYear { private: int day; public: DayOfYear()

这个程序的目标是从1到365取一个整数,并将其转换为一个月和一天。例2=一月二日,365=十二月三十一日。我以为我把所有的东西都打对了,我的思路是正确的,但是现在我的头文件中有16个错误来自第12-14行,还有1个错误来自我的类文件

我不确定这是否真的是头球还是我在其他地方搞砸了

头文件

#ifndef DAYOFYEAR_H
#define DAYOFYEAR_H

class DayOfYear
{
private:
    int day;

public:
    DayOfYear();
    static int daysAtEndOfMonth[];
    static string monthName[];
    void print();
    void setDay(int day) { this->day = day; };

};

#endif
课程

#include "DayOfYear.h"
#include <iostream>
#include <string>

using namespace std;

DayOfYear::DayOfYear() {

}

int DayOfYear::daysAtEndOfMonth[] = {
31, 59, 90,
120, 151, 181,
212, 243, 273,
304, 334, 365
};

string DayOfYear::monthName[] = { "January", "February",
"March", "April",
"May", "June"
"July", "August",
"September", "October",
"November", "December"
};

void DayOfYear::print() {
    int month = 0;

    while (daysAtEndOfMonth[month] < day)
        month = (month + 1) % 12;


    if (month == 0) {
        cout << "\nJanuary" << day << endl << endl;
    }

    else
    {
        cout << endl << monthName[month] << " " << day - daysAtEndOfMonth[month - 1]
            << "\n\n";
    };
};
#包括“DayOfYear.h”
#包括
#包括
使用名称空间std;
DayOfYear::DayOfYear(){
}
int DayOfYear::daysAtEndOfMonth[]={
31, 59, 90,
120, 151, 181,
212, 243, 273,
304, 334, 365
};
字符串DayOfYear::monthName[]={“一月”、“二月”,
“三月”、“四月”,
“五月”、“六月”
“七月”、“八月”,
“九月”、“十月”,
“11月”、“12月”
};
void dayof year::print(){
整月=0;
while(daysAtEndOfMonth[月]<日)
月=(月+1)%12;
如果(月份==0){

cout头文件需要
#包括
,并且必须在头文件中引用
std::string

(使用<代码>使用命名空间STD;在C++文件中不够好,它在头文件中非常糟糕,它将整个STD命名空间引入到包括头在内的每个文件中的全局命名空间中。只需说“不”)< /P> 其他意见:

  • daysAtEndOfMonth
    monthName
    应为
    const
  • 下一次,包括错误消息(这个错误很明显,下一个不会)
  • 下一次,放一个与错误相符的注释标记-我不会花时间倒计时到第45行

您的头文件需要
#包括
,并且您必须在头文件中引用
std::string

(使用<代码>使用命名空间STD;在C++文件中不够好,它在头文件中非常糟糕,它将整个STD命名空间引入到包括头在内的每个文件中的全局命名空间中。只需说“不”)< /P> 其他意见:

  • daysAtEndOfMonth
    monthName
    应为
    const
  • 下一次,包括错误消息(这个错误很明显,下一个不会)
  • 下一次,放一个与错误相符的注释标记-我不会花时间倒计时到第45行

请列出您所遇到的实际错误,但我的水晶球告诉我这正是您所需要的。第12-14行写得不正确。(当您说“您有错误”时,唯一可能给出的答案是“那么您一定做错了什么事”。)投票因未能证明MVCE而关闭。对静态数组使用constexpr,将它们的值放在标题中,然后感谢我。请包括您得到的实际错误,但我的水晶球告诉我这正是您需要的。第12-14行写得不正确。(当您说“您有错误”时)唯一可以给你的答案是“那么你一定是做错了什么”。)投票决定关闭MVCE。对静态数组使用constexpr,将它们的值放在标题中,稍后感谢我。
#include <iostream>
#include <string>
#include "DayOfYear.h"

using namespace std; 

int main() {
    int day; 
    DayOfYear DayOfYearObj;

    cout << "This program will convert an integer between 1 and 365 to a Month/Day format"
        << endl << endl;
    cout << "Please enter an integer from 1 to 365:";
    cin >> day;

    //set day
    DayOfYearObj.setDay(day);

    //display
    DayOfYearObj.print();

    return 0;

}