错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无
error: cannot convert ‘double*’ to ‘double’ for argument ‘1’ and error: invalid types ‘double[double]’ for array subscript
我正在尝试引入部分数据文件来填充数组,用户有三次尝试输入正确的数据文件名。我一再遇到这些错误。我知道像 arr 这样的数组只是指向内存块的指针。
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
void extract (double arr ,int n, double& i, int& error);
int main () {
double arr[256];
int n=256;
double i=0;
int error=0;
extract (arr,n,i,error);
return 0;
}
void extract (double arr, int n, double& i,int& error){
string infile;
string data="data.txt";cout <<"enter data file name/n";
cin >> infile;
while ((error<3) && (data.compare(infile) != 0)){
error++;
cout << "error in input. Please try again/n";
cin >> infile;
}
if (error<3){
ifstream fin;
fin.open("data.txt");
while ((i<n) && (fin >> arr[i])){
i++;
cout << arr[i] << " ";
}
fin.close();}
}
错误发生在将数据文件中的数据输入数组的 while 循环中。将双 i 更改为 int 我用
error: invalid types ‘double[int]’ for array subscript
这是我的数据文件8487781694368793502263289160642741277337126968308331632468363032359706894571243307422208538992516711427928157746371978262685283764730145825968346156835654451889777989854525510033617769401327879540
在函数
的定义和声明中将
void extract (double arr ,int n, double& i, int& error);
更改为void extract (double* arr ,int n, double& i, int& error);
extract
编辑:另一个错误是因为double
类型变量被用作数组索引,在您的情况下i
extract
函数中,所以要么将i
的类型更改为int
,要么在提取函数的最开始时使用 i = static_cast<int>(i)
,我更喜欢第一种方法。
这是您的代码的链接以及所做的更改,它可以完美编译和工作。
希望这有帮助
相关文章:
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 错误:无法将"<lambda(double)>"转换为"double(*)(double)"
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- test1.cpp:9:77:错误:对"(const std::normal_distribution) <double>(std::mt19937&)"的调用不匹配
- 逻辑'double free or corruption (fasttop)'错误
- emplace_back和push_back给出错误'double free or corruption (fasttop)'尽管定义了复制和移动构造函数
- 错误:"int pow(double,int)"与上一个声明int pov(double a,int
- 在调用中使用 std::vector,<double>但收到有关 std::vector<double、std::分配器>正在使用的错误<double>
- std::vector using back(), pop_back(), push_back(), 得到'double free or corruption'错误
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- "cin"错误地解析了Mac上的"double"输入
- 如何修复此错误:二进制表达式的操作数无效("std::vector<double>"和"double")?
- "double(*)(string, double, double)"尝试传递函数C++时"double"转换错误
- 对"displayForStudent(int, int const*, double const*, int)"的未定义引用 collect2.exe:错误:ld 返回 1 个退出状态
- 错误:无法从双人**转换为double
- 错误:将"const double"绑定到类型为"double&"的引用会丢弃限定符
- 为什么此代码显示"cannot convert 'double' to 'double*'"错误?
- 将矢量<string>转换为矢量<double>C++错误
- 数组饼图的大小具有非集成类型'double'错误,