2016-05-24 5 views
-1
void compare(vector<Customer>&compare,vector<CarProperties>&cars,int customer_number) 
{ 
    int c = customer_number; 
    for(int i =0; i<=cars.size(); i++) 
    { 
     if(cars[i].getname() == compare[c].getCustomerDesiredCar()) 
      break; 
     cout << "Enter car is available for rent"<<endl; 
    } 
} 

ここで私は2つのベクトルを比較しています。車のベクトルには車が含まれており、ユーザーが入力した車の名前と車のベクトルを比較するベクトルを比較します。私はこれを実行しようとするたびに、私のコンパイラはこの関数でクラッシュする、そうでなければプログラムはうまく動作しています。2つのベクトルのオブジェクトを簡単に比較する方法は?

+3

あなたが範囲外に行っている、少なくとも。これは 'i

+0

Compareは関数名と変数名の両方ですか? –

+0

はベクトル名であり、関数名も同様です。@EissaN –

答えて

0

私はあなたがこのようなあなたの機能を書き換えすることができます推測しています:

void compare(Customer const& customer, vector<CarProperties> const& cars) 
{ 
for(unsigned i = 0; i< cars.size(); i++) 
{ 
    if(cars[i].getname() == customer.getCustomerDesiredCar()) { 
     cout<<"Enter car is available for rent"<<endl; 
     break; 
    } 
} 
} 
1

あなたのベクトルの最後の要素を超えてアクセスしているので、あなたがエラーを取得します。私は代替案を提案する:

bool isCarAvailable(const std::string& desiredCar, const vector<CarProperties>& cars) { 
    for(int i =0; i<cars.size(); i++) { 
     if(cars[0].getname() == desiredCar) { 
      return true; 
     } 
    } 
    return false; 
} 

あなたはこのように機能を実行することができます。

if (isCarAvailable(compare[c].getCustomerDesiredCar(), cars)) 
{ 
    cout <<"Available"<<endl 
} 
+1

関数の戻り値の型を変更するのを忘れてしまった。 –

+0

良いピックアップ。ありがとう。 – Striker

関連する問題