簡體   English   中英

為什么編譯器顯示錯誤“不匹配'operator[]'(操作數類型是'carti'和'int')”

[英]Why does the compiler show the error "no match for 'operator[]' (operand types are 'carti' and 'int')"

每次我嘗試運行我的代碼時,編譯器總是顯示錯誤:“operator[]”不匹配(操作數類型是“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<<

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM