>>演算子のオーバーロードに問題があり、正しい演算方法が見つからないようです。オーバーロード>>演算子と読み込みChar(C++)
私は、ファイルを開き、文字を読み、その文字に基づいてオブジェクトの変数を変更することになっています。
私の問題がどこではわかりませんが、回答が見つかりません。どんな助けでも大歓迎です。
istream &operator >> (istream &strm, RNode &obj) {
char tempChar = nullptr;
strm >> tempChar;
if (tempChar == '#') {
obj.setReservationStatus(true);
}
else obj.setReservationStatus(false);
return strm;
}
、ここで私はそれをテストしようとしているものです:
は、ここに私の関数です。私たちは映画予約システムを作っているので、空席です。予約された座席です。考え方は、それがどの文字かを確認し、次にreservationStatusを変更することです。
fs.open("auditorium1.txt", ios::in);
RNode *tempNode;
fs >> tempNode;
cout << tempNode.getReservationStatus();
私は 『演算子>>』の「いいえマッチ言わない、それは私のデータ私が使用することができますタイプと理由私はできないの束を与えるエラーが発生します。
どのようにすることができます高度で
おかげ?この問題を解決する。
。 'RNode * tempNode;'を 'RNode tempNode;'に変更してください。 – songyuanyao
@songyuanyao Wow。それはうまくいった。それがうまくいった理由についてもっと説明できますか? –
'RNode * 'ではなく' RNode'を期待する 'operator >>'のパラメータ型をチェックしてください。 BTW: 'operator >>' aloはパラメータとしてポインタを取ると宣言することはできません。 – songyuanyao