2017-02-13 2 views
0

Цель этой программы - взять целое число от 1 до 365 и преобразовать его в месяц и день. Ex. 2 = 2 января, 365 = 31 декабря. Я думал, что все правильно напечатано, я был на правильном пути, но теперь у меня есть 16 ошибок, исходящих из строк 12-14 в моем заголовочном файле, и 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 

КЛАСС

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

MAIN

#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

Пожалуйста, включите фактические ошибки, которые вы получаете, но мой хрустальный шар подсказывает мне, что [это] (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++, это много, много хуже в файле заголовка - это приносит весь патезрасе в глобальное пространство имен в каждый файл, который включает в свой заголовок. Просто скажите нет)

других комментариев:

  • daysAtEndOfMonth и monthName должны быть const.
  • В следующий раз включите сообщение об ошибке (эта ошибка была мгновенно очевидна, а следующая не будет).
  • В следующий раз, положить комментарий маркировки, которая является строкой с ошибкой - я не собираюсь тратить время на отсчитывать линии 45.
Смежные вопросы