私は動的に作成されたキューを持っており、>>演算子をオーバーロードしようとしています。しかし、私が入力する数字は間違っています。私が間違っていることを推測しますか? (< <オペレータはうまく動作します)。 だから私のクラスには、次のとおりです。配列アイテムのistream&operator >>を正しく設定する方法は?
class queue
{
int queue1[100];
int rear1,front1, num1;
public:
queue(): rear1(-1),front1(-1){};
queue(int , int , int);
void insert1(int);
void delet1();
friend istream& operator>>(istream& in, queue& obj);
friend ostream& operator<<(ostream& out, const queue& obj);
void queue::printOn(ostream &out) const;
};
と機能のオペレータ自身:
istream& operator>>(istream& in, queue& obj){
in >> obj.queue1[obj.rear1++];
cout <<"inserted: " << obj.queue1[obj.rear1];
return(in);
}
と私の主な目的球は次のとおりです。
queue qu1;
cout<<"Entered number:";
cin>>qu1;
cout << qu1;
これは、プログラムがどのように動作するかです:
入力番号:5
しかし
挿入:挿入-858993460
:-858993460
あなたは 'rear1 ++'を行ったので、最後の要素の後にオブジェクトを印刷しています。 "obj.queue1 [obj.rear1-1]; – Franck
なぜあなたは(すでに非常に長い)質問タイトルで「正しく」呼び出すのですか?それは何を追加するのですか? –
ええ、助けて、入力した番号を印刷します。しかし、私がキューのように出力しようとすると: 'cout << qu1;' それでも-858993460の番号が表示されます。 – yTpo