C++ 我的C++;工作

C++ 我的C++;工作,c++,class,C++,Class,因为我的代码,我的头撞到了墙上。基本上,我需要创建一个程序来读取文件并打印出规范要求的内容。我被规范的这一部分卡住了: 对于6分,创建一个名为analyze.cpp的文件,其中包含一个程序: •打开sheffield.data并跳过标题行(getline将非常方便) •将文件中的数据读取到MonthData对象的向量中 •使用矢量中存储的数据进行计算和显示 –最低温度的年份和月份 –总降雨量最高的年份 简而言之,sheffield.data文件中包含以下信息: yyyy mm tmax tmin

因为我的代码,我的头撞到了墙上。基本上,我需要创建一个程序来读取文件并打印出规范要求的内容。我被规范的这一部分卡住了:

对于6分,创建一个名为analyze.cpp的文件,其中包含一个程序:

•打开sheffield.data并跳过标题行(getline将非常方便)

•将文件中的数据读取到MonthData对象的向量中

•使用矢量中存储的数据进行计算和显示 –最低温度的年份和月份 –总降雨量最高的年份

简而言之,sheffield.data文件中包含以下信息:

yyyy mm tmax tmin af雨日 degC degC天毫米小时

1930 1 8.1 2.4 6 120.5 54.2

1930 2 4.4 0.6 12 22.2 29.1

1930 3 8.1 2.1 9 76.2 88.2

我有3个文件。Data.cpp、Data.hpp和analyze.cpp

Data.hpp:

#ifndef DATA_HPP
#define DATA_HPP

#include <iostream>
#include <string>
#include <cmath>

class MonthData
{
  friend std::istream& operator >> (std::istream&, MonthData&);

  public:
        //overload constructor
    MonthData(double, int, double, double, int, double, double);

        //Accessor functions
    double getYear() const    { return year; }                //returns the year
    int getMonth() const      { return month; }               //returns the month
    double getMaximum() const { return temp_maximum; }        //returns maximum temperature
    double getMinimum() const { return temp_minimum; }        //returns minimum temperature
    int getFrost() const      { return air_frost; }           //returns air frost
    double getRain() const    { return rain; }                //returns rainfall
    double getSun() const     { return sun; }                 //returns no of hours of sunshine

  private:
    double year;
    double month;
    double temp_maximum;
    double temp_minimum;
    int air_frost;
    double rain;
    double sun;
};
#endif

MonthData类缺少默认构造函数

error: no matching function for call to ‘MonthData::MonthData()’
您在main()中编写的代码构造了一个没有参数的MonthData,这就是上述错误的原因(可能std::vector也需要一个默认构造函数):


因此,请提供一个默认构造函数。

您正在此处调用默认构造函数:

error: no matching function for call to ‘MonthData::MonthData()’
 MonthData data;
但是你没有实施一个


您创建了一个构造函数,该构造函数接收参数,将文件读取为变量,然后实例化MonthData数据(…)

您没有为
MonthData()
声明默认构造函数,编译器是正确的。您需要读取错误。
没有匹配的函数用于调用“MonthData::MonthData()”
。您没有默认构造函数。
error: no matching function for call to ‘MonthData::MonthData()’
MonthData data;
 MonthData data;