在模板类实现中使用结构模板
Posted
技术标签:
【中文标题】在模板类实现中使用结构模板【英文标题】:using struct template in template class implementation 【发布时间】:2013-09-26 05:16:07 【问题描述】:我正在尝试学习 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;
我期待在这种嵌套实现中如何解析模板参数的一个很好的解释。
【问题讨论】:
@ZackNewsham 不在 C++ 中 @555k 啊-谢谢,我知道它在 C 中是如何完成的。我将删除评论 如果代码将参数命名为n
,错误消息怎么可能是关于函数MyQueue::add(T data)
的?
【参考方案1】:
您的new
有语法错误。
qnode<T>* temp = new qnode;
应该是
qnode<T>* temp = new qnode<T>();
请记住,没有模板参数的模板类对编译器毫无意义。每当你输入 qnode(在初始声明之后),你也需要输入它的模板参数!
【讨论】:
以上是关于在模板类实现中使用结构模板的主要内容,如果未能解决你的问题,请参考以下文章