为什么编译器显示错误"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')"

本文关键字:types operand are and int carti for match no 显示 编译器      更新时间:2023-10-16

每次我尝试运行代码时,编译器总是显示错误:与"运算符[]"不匹配(操作数类型为"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<<

相关文章: