-1

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

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

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

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

2 回答 2

2

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

void InsertNode(const Item<int> & item)

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

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

于 2013-04-22T12:41:33.830 回答
1

重新设计你的班级会更好。

template<class T>
class MyQueue {

    struct Node {
        T item;
        Node * next;
    };

public:
    MyQueue();
    void InsertNode(const T & item);

private:
    Node * _root;
};

PS对不起我的英语。

于 2013-04-22T13:32:17.147 回答