为什么编译器显示错误"no match for 'operator[]' (operand types are 'carti' and 'int')"
Why does the compiler show the error "no match for 'operator[]' (operand types are 'carti' and 'int')"
每次我尝试运行代码时,编译器总是显示错误:与"运算符[]"不匹配(操作数类型为"Carti"和"int")| 多次。我正在尝试从单个文件中读取 10 个结构,并使用"for"循环将它们分配给"c[i]"变量,以三种不同的方式对它们进行排序,然后在屏幕上打印它们。(这是学校作业)这是我到目前为止的代码:
#include <iostream>
#include <fstream>
using namespace std;
struct carti{
char nume[41];
float pret;
float rating;
}c;
int main(){
int i,j;
ifstream fin;
fin.open("carti.txt");
for(i=0;i<10;i++){
getline(c[i].nume,41)
fin>>c[i].pret;
fin>>c[i].rating;
cout<< c[i]<<"n";
}
for(i=0;i<10;i++){
if(c[i].nume[0]>c[i+1].nume[0]){
c[i]=c[i+1];
}
}
for(i=0;i<10;i++){
cout<<c[i]<<"n";
}
for(i=0;i<10;i++){
if(c[i].pret>c[i+1].pret){
c[i]=c[i+1];
}
}
for(i=0;i<10;i++){
cout<<c[i]<<"n";
}
for(i=0;i<10;i++){
if(c[i].rating>c[i+1].rating){
c[i]=c[i+1];
}
}
for(i=0;i<10;i++){
cout<<c[i]<<"n";
}
}
你可能想这样做:
struct carti{
char nume[41];
float pret;
float rating;
}c[10];
话虽如此,您的代码还有其他问题。
例如,你想做cout<<c[i]
.为此,您需要提供一个适用于您的结构的重载运算符operator<<
。
相关文章:
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- 构建 TensorFlow r1.14 C++文件时缺少文件"tensorflow/core/framework/types.pb.h"
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- 为什么"types may not be defined in parameter types"
- 如何在Arduino程序中解决"invalid operands of types"?
- 如何在 GCC 中启用 C/C++ "Conditional with Omitted Operand"(又名猫王操作员 "?:" )
- 错误"invalid types ... for array subscript"是什么意思?
- C++指针算术"lvalue required as left operand of assignment"错误
- 为什么"operand = (operand*10) + (expression[i] - '0');"
- 重载运算符 [] 并且没有收到"lvalue required as left operand of assignment"错误
- 无法打开源文件"sys/types.h"、"sys/stat.h"
- 为什么这句话"The expression can be used only as the left-hand operand of a member function call"在 [expr.re
- 传递自定义函数类型时的'incompatible types in assignment'
- "lvalue required as increment operand" 关于 C++ 和 stl vector's begin()
- SWIG INOUT types (C++ to Python)
- 尝试实施 PIMPL idom 时如何避免"redefinition; different basic types"
- "base operand of ‘->’ has non-pointer type" 但它是指针
- 有人能解释一下特殊的std::函数模板参数列表语法(这个奇怪的类型(Types..))吗
- 当foo是接受单个模板参数的结构时,'foo<Type1, Types...>'是否合法?
- 为什么编译器显示错误"no match for 'operator[]' (operand types are 'carti' and 'int')"