私はVisual Studio 2012コンソールモードでC++プロジェクトに取り組んでおり、cin
関数でこの奇妙で永続的なエラーが発生し続けます。
下 >>
赤い線が表示され、プログラムからno operator matches these operands
。すべての配列要素を別のメソッドで初期化しました。
以下はスニペットの例です(実際のコードにはさらに多くの変数が含まれています)。
for (int i = 0; i < 14; i++)
{
cout << "For taxi: " << i+1 << "Please input the taxi rank they are currently parked at, if at all ('Train Station', 'South Walls' or 'Chell Road')" << endl;
cin >> allTaxiDetails[i].taxiRank;
}
allTaxiDetails
は、次の構造であるデータ型「taxiDetails
」の配列です。
struct taxiDetails {
string taxiDriverSurname;
int taxiID;
int taxiCoordinates;
int numberOfSeats;
bool taxiContainsCustomerYesNo;
bool WheelChairAccessibleVehicle;
string taxiRank;
fareDetails fareDetailsForTaxi;
bool taxiAvaliable;
};
問題は、string
に_operator>>
_メソッドがないことですが、あります...
#include <string>
_を忘れましたか?getline(std::cin, allTaxiDetails[I].taxiRank, '\n');
を使ってみてください。operator>>
_を定義します。何らかの方法でクラス定義を取得したstd::string
タイプのオブジェクトを読み込もうとしているようです(たとえば、<iostream>
を含めることによって)。しかし、必要なすべての操作を取得できませんでした。 <string>
が含まれていることを確認してください:
#include <string>
// ...
一部のヘッダーは他のいくつかのクラスの定義を提供しますが、実際には定義を取得するためにヘッダー全体を使用しません。 std::string
はIOStreamsを宣言するために必要な場所にあるため、完全なヘッダーを含めることによっては定義されない可能性が高くなります。
忘れる#include <string>この重要なヘッダーはエラーの原因です。それはC++の初心者として私に起こりました。