У меня есть динамически сделанная очередь, и я пытаюсь перегрузить оператор >> для нее. Но число, которое я вводил, ошибочно. Какие-нибудь догадки о том, что я делаю неправильно? (оператор < < работает нормально, хотя). Так что мой класс:Как правильно настроить 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);
}
и мой основной Funtion является:
queue qu1;
cout<<"Entered number:";
cin>>qu1;
cout << qu1;
Вот как работает программа:
Введенный номер: 5
но
вставлено: -858993460
вставлено: -858993460
Вы печатаете объект после последнего элемента, так как вы сделали 'rear1 ++'. Вы должны использовать «cout <<»: «<< obj.queue1 [obj.rear1-1];' – Franck
Почему вы вызываете «правильно» в (уже очень длинном) вопросе? Что это добавляет? –
Да, это помогло, и он печатает номер, который я ввел. Но когда я пытаюсь распечатать очередь так: 'cout << qu1;' все еще выдает номер -858993460. – yTpo