【问题标题】:How to resolve a lot of errors in my C++ header file?如何解决我的 C++ 头文件中的很多错误?
【发布时间】:2017-02-13 06:35:56
【问题描述】:

这个程序的目标是从 1 到 365 取一个整数并将其转换为月和日。前任。 2 = 1 月 2 日,365 = 12 月 31 日。我以为我输入的所有内容都正确,我走在正确的轨道上,但现在我的头文件中的第 12-14 行有 16 个错误,还有 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";
    };
};

主要

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

}

【问题讨论】:

  • 请包括您遇到的实际错误,但我的水晶球告诉我 this 是您所需要的。
  • 第 12-14 行没有正确写入。 (当你说“你有错误”时,唯一可能给你的答案是“那么你一定做错了什么”。)
  • 因未能提供 MVCE 而投票关闭。
  • 对静态数组使用 constexpr,将它们的值放在标题中,稍后再感谢我。

标签: c++ header


【解决方案1】:

你的头文件需要#include &lt;string&gt;,而且你必须在头文件中引用std::string

(在 C++ 文件中使用 using namespace std; 已经够糟糕了,在头文件中使用更糟糕的是,很多 - 它会将整个 std 命名空间带入 中的全局命名空间每个包含你的标题的文件。说不!)

其他cmets:

  • daysAtEndOfMonthmonthName 应该是 const
  • 下一次,包括错误信息(这个错误很明显,下一个就不会了)。
  • 下一次,把与错误一致的注释标记 - 我不会花时间倒数到第 45 行。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2016-03-27
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多