2017-02-13 89 views
0

这个程序的目标是从1 - 365的整数,并将其转换为一个月和一天。防爆。 2 = 1月2日,365 = 12月31日。我以为我得到了一切正确的输入,我在正确的轨道上,但现在我有我的头文件中12-14行错误来自16错误,并从我的类文件来的1错误。如何解决我的C++头文件中的很多错误?

我不确定它是否真的是标题,或者如果我弄乱了别的地方。

头文件

#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 

CLASS

#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"; 
    }; 
}; 

主要

#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; 

} 
+2

请包括你所得到的实际错误,但我的水晶球告诉我,[this](http://stackoverflow.com/questions/11300652/static-data-member-initialization)就是你需要的。 – SingerOfTheFall

+2

第12-14行写入不正确。 (当你说“你有错误”时,你可能会给你的唯一答案是“那么你肯定做错了什么”)。 –

+0

因未能提供MVCE而投票结束。 – Walter

回答

2

你的头文件需要#include <string>,并且您必须在头文件中参考std::string

(使用using namespace std;是一个C++文件已经够糟,它是非常,糟糕的头文件 - 它带来了整个std命名空间到全局命名空间中每一个包括你的头文件。说不)

其他意见:

  • daysAtEndOfMonthmonthName应该是const
  • 下一次,包括错误消息(这个错误是显而易见的,下一个将不会)。
  • 下一次,把一个注释标记是与错误行 - 我不打算花时间的倒计时线45
相关问题