我正在尝试学习 C++ 中的模板用法。我创建了一个结构节点,在队列类实现中使用它,但出现编译器错误:
错误”成员函数 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;
}
我期待对如何在此类嵌套实现中解析模板参数进行很好的解释。
Your new
有语法错误。
qnode<T>* temp = new qnode;
应该
qnode<T>* temp = new qnode<T>();
请记住,没有模板参数的模板类对于编译器来说是没有意义的。每当您键入 qnode(在初始声明之后)时,您还需要键入其模板参数!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)