编译错误,c++
Compiler errors, c++?
我得到这些错误。我正试着从文件中读取并打印出最低温度的年份。我还有另外两个文件。一个名为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();
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'