我正在尝试创建一个使用通用项目的队列。我收到以下代码的错误。
如何在另一个类中使用模板类?
这是我到目前为止所尝试的内容:
#include <iostream>
using namespace std;
template<class T>
class Item
{
public:
Item(const T & item)
: itemVal(item)
{
}
private:
T itemVal;
};
class MyQueue
{
public:
// Error #1
void InsertNode(const Item & item);
private:
struct Node {
// Error #2
Item item;
struct Node * next;
};
};
int main()
{
Item<int> * element = new Item<int>(9);
return 0;
}
答案 0 :(得分:2)
Item
不是类型,它是类模板。您需要提供模板参数。在这种情况下,int
:
void InsertNode(const Item<int> & item)
和
struct Node{
Item<int> item;
Node<int> * next;
};
否则,您可以制作MyQueue
和Node
类模板。
答案 1 :(得分:1)
重新设计课程会更好。
template<class T>
class MyQueue {
struct Node {
T item;
Node * next;
};
public:
MyQueue();
void InsertNode(const T & item);
private:
Node * _root;
};
P.S。抱歉我的英文。