C++的一个问题,没有解决思路的
这是我的源程序:
#include <iostream.h>
const int size = 100;
class qtype
{
public:
qtype():head(0),tail(0){}
void store(int num);
int fetch();
private:
int quenue[size];
int head,tail;
};
void qtype::store(int num)
{
if((tail+1)%size==head)
{
cout<<"queue is full\n";
return;
}
tail = (tail+1)%size;
queue[tail]=num;
}
int qtype::fetch()
{
if(head==tail)
{
cout<<"queue is empty\n";
return 0;
}
head = (head+1)%size;
return queue[head];
}
void main()
{
qtype q1,q2;
for(int i =1; i<=10; i++)
{
q1.store(i);
q2.store(i*i);
}
for (int j =1; j<=10; j++)
{
cout<<"Dequeue1:"<<q1.fetch()<<endl;
}
}
编译时报如下错误:
QType.cpp
D:\visual c\QtType\QType.cpp(23) : error C2065: 'queue' : undeclared identifier
D:\visual c\QtType\QType.cpp(23) : error C2109: subscript requires array or pointer type
D:\visual c\QtType\QType.cpp(23) : error C2106: '=' : left operand must be l-value
D:\visual c\QtType\QType.cpp(34) : error C2109: subscript requires array or pointer type
执行 cl.exe 时出错.
[解决办法]
#include <iostream.h>const int size = 100;class qtype{public: qtype():head(0),tail(0){} void store(int num); int fetch();private: int quenue[size]; int head,tail;};void qtype::store(int num){ if((tail+1)%size==head) { cout<<"queue is full\n"; return; } tail = (tail+1)%size; quenue[tail]=num; // 拼写错了}int qtype::fetch(){ if(head==tail) { cout<<"queue is empty\n"; return 0; } head = (head+1)%size; return quenue[head];}void main(){ qtype q1,q2; for(int i =1; i<=10; i++) { q1.store(i); q2.store(i*i); } for (int j =1; j<=10; j++) { cout<<"Dequeue1:"<<q1.fetch()<<endl; }}
[解决办法]
int quenue[size]; 改下:int queue[size];
最好使用 #include <iostream>
[解决办法]
把代码中的queue改成quenue就行了