编译错误,c++

Compiler errors, c++?

本文关键字:c++ 错误 编译      更新时间:2023-10-16

我得到这些错误。我正试着从文件中读取并打印出最低温度的年份。我还有另外两个文件。一个名为data.hpp和data.cpp的文件。在data.hpp是我的类定义,在.cpp是朋友重载器。

naveed@naveed-VirtualBox:~/Documents/cw$ g++ -Wall analyze.cpp -o analyze
analyze.cpp: In function ‘int main()’:
analyze.cpp:11:13: error: no matching function for call to ‘MonthData::MonthData()’
analyze.cpp:11:13: note: candidates are:
data.hpp:14:5: note: MonthData::MonthData(double, int, double, double, int, double,   double)
data.hpp:14:5: note:   candidate expects 7 arguments, 0 provided
data.hpp:8:7: note: MonthData::MonthData(const MonthData&)
data.hpp:8:7: note:   candidate expects 1 argument, 0 provided
analyze.cpp:28:38: error: cannot convert ‘MonthData’ to ‘float’ in initialisation
analyze.cpp:29:30: error: cannot convert ‘MonthData’ to ‘int’ in initialisation
analyze.cpp:30:19: error: ‘o’ was not declared in this scope
analyze.cpp:30:42: warning: comparison between signed and unsigned integer expressions     [-Wsign-compare]
analyze.cpp:32:22: error: ‘VectorData’ was not declared in this scope
analyze.cpp:33:9: error: ‘Year’ was not declared in this scope 
analyze.cpp:36:115: error: ‘Year’ was not declared in this scope
analyze.cpp:29:11: warning: unused variable ‘year’ [-Wunused-variable]

这是我的分析文件:

#include <istream>
#include <fstream>
#include <vector>
#include "data.hpp"
using namespace std;
int main()
{
 MonthData data;
  vector<MonthData> vectorData;
  ifstream file ("sheffield.data");
  string line;
  int l_num = 0;
  if (file.is_open()) {
    while (getline(file, line))
      if (l_num < 4) {
        l_num += 1;
      }
      else {
        file >> data;
        vectorData.push_back(data);  
      }  
      float MinimumDeg = vectorData[0], getMinTemp();
      int year = vectorData[0], getYear();
      for (int a =o; a < vectorData.size(); a++)
      {
        MinimumDeg = VectorData[a], getMinTemp();
        Year = VectorData[a], getYear();
      }
      cout << "Lowest year and month lowest rainfall: 'n'" << "Min Temp;" << MinimumDeg << "C 'n'" << "Year" << Year << endl;

      return 0;
}  
}  

我正在尝试从文件中读取并打印出最低温度年份。

看起来MonthData没有声明一个0参数的构造函数。您需要编写一个或使用一个具有适当方法签名的方法(如需要7个参数的方法)。

就像taocp说的,你不能把MonthData对象赋值给float。

正如Vlad提到的,你有一个逗号错字。

这一行似乎是一个错别字。我想0应该是0。

for (int a =o; a < vectorData.size(); a++)

在这几行中,您需要小写Vector中的v。VectorData和VectorData在c++中不是一回事。

MinimumDeg = VectorData[a], getMinTemp();
Year = VectorData[a], getYear();

中各年份相同
cout << "Lowest year and month lowest rainfall: 'n'" << "Min Temp;" << MinimumDeg << "C 'n'" << "Year" << Year << endl;

考虑到所有这些,我假设您从未重载>>操作符以使这行工作:

file >> data;

您的类MonthData没有默认构造函数。对象data

的定义
MonthData data;

无效,因为在此语句中必须调用不存在的默认构造函数。

默认构造函数是无需显式指定实参即可调用的构造函数。

同样在这些语句中

  float MinimumDeg = vectorData[0], getMinTemp();
  int year = vectorData[0], getYear();

你打错了,把句号写成了逗号,比如这里

vectorData[0], getMinTemp()

同样在这个循环中

for (int a =o; a < vectorData.size(); a++)

你又打了一个错字,在初始化

时把数字0写成了字母'p'。

同样,要删除警告,请按以下方式更改循环

for ( vector<MonthData?::size_type a = 0; a < vectorData.size(); a++)

或代替

vector<MonthData?::size_type a = 0;

你可以直接写

size_t a = 0;

同样在这个循环中,您使用了未声明的变量Year。这里只声明了变量year

  int year = vectorData[0], getYear();
  for (int a =o; a < vectorData.size(); a++)
  {
    MinimumDeg = VectorData[a], getMinTemp();
    Year = VectorData[a], getYear();
  }

在表达式

中使用逗号而不是句号
    Year = VectorData[a], getYear();