所以我有一个动态的队列,我试图为它重载>>运算符。但我输入的号码是错误的。任何猜测我做错了什么? (< <运营商工作得很好,但)。 所以我的课是:如何正确设置数组项目的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
10为什么你在(已经很长的)问题标题中喊出“正确”?这是什么添加? –
是的,这有帮助,它打印出我输入的号码。但是,当我尝试打印队列如下: 'cout << qu1;' 它仍然打印出-858993460号码。 – yTpo