在另一个类中使用模板类

时间:2013-04-22 12:37:59

标签: c++ templates

我正在尝试创建一个使用通用项目的队列。我收到以下代码的错误。

如何在另一个类中使用模板类?

这是我到目前为止所尝试的内容:

#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;
}

2 个答案:

答案 0 :(得分:2)

Item不是类型,它是类模板。您需要提供模板参数。在这种情况下,int

void InsertNode(const Item<int> & item)

struct Node{
    Item<int> item;
    Node<int> * next;
};

否则,您可以制作MyQueueNode类模板。

答案 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。抱歉我的英文。