我想在C ++中实现通用队列,但我遇到了模板问题:
队列元素struct
:
template<class T>
struct Elem{
T *obj;
Elem<T> *sled;
Elem(T *p){
obj=p;
sled=0;
}
};
这是Queue
类:
template<class T> class Queue{
public:
//
// public function go here....
//
T* get(ID id){
for(Elem<T> *tek = head; tek; tek = tek->sled ){
if(id == tek->obj->id ){ // <--- ERROR: `id` is not member of '<template class>'
return tek->obj;
}
}
return 0;
}
}
现在,如果我定义:
Queue<PCB>* myQueue = ....
编译器输出错误:
的成员
id
不是PCB
如果所有T
类都具有该特定字段(在此示例中为id
字段),是否可以访问模板类的公共字段?