![](/img/trans.png)
[英]error: no match for ‘operator+’ (operand types are ‘std::vector<int>’ and ‘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.