[英]using struct template in template class implementation
I am trying to learn templates usage in c++. 我正在尝试学习c ++中的模板用法。 I have created a struct node which I am using in queue class implementation but I am getting compiler error: Error" expected type specifier before qnode in member function bool MyQueue::add(T data) 我创建了一个结构节点,我在队列类实现中使用但是我收到了编译器错误:错误“在成员函数bool MyQueue :: add(T data)中qnode之前的预期类型说明符
#include <iostream>
using namespace std;
template <typename T>
struct qnode {
qnode* Node;
T data;
};
template <class T>
class MyQueue {
qnode<T>* front;
qnode<T>* end;
public:
MyQueue() {
front=NULL;
end=NULL;
}
bool add (T n);
T get(void);
bool empty(void)
{
if ( front == NULL)
return true;
else
return false;
}
size_t size(void)
{
}
};
template <typename T>
bool MyQueue<T>::add ( T n)
{
qnode<T>* temp = new qnode;
temp->data = n;
temp->Node = NULL;
if ( front == NULL )
{
cout << "Adding front qnode " << endl;
front = end= temp;
// front->Node = end;
return true;
}
cout << "Adding qnode " << endl;
end->Node = temp;
end=temp;
//delete temp;
return true;
}
I am looking forward for a nice explanation for how template parameters get resolved in such nested implementation. 我期待着在这种嵌套实现中如何解析模板参数的一个很好的解释。
Your new
has a syntax error. 您的new
语法有错误。
qnode<T>* temp = new qnode;
should be 应该
qnode<T>* temp = new qnode<T>();
Remember, a template class without template parameters is meaningless to the compiler. 请记住,没有模板参数的模板类对编译器没有意义。 Whenever you type qnode (after the initial declaration), you need to type its template parameters as well! 无论何时键入qnode(在初始声明之后),您还需要键入其模板参数!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.