2013-04-22 54 views
-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; 
} 
+0

错误信息说什么? – ecatmur 2013-04-22 12:39:06

+0

错误。该错误创建行帮助。 – rerun 2013-04-22 12:39:30

回答

1

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

template<class T> 
class MyQueue { 

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

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

private: 
    Node * _root; 
}; 

P.S.对不起我的英语不好。

+0

非常感谢。按照您的建议修改它。 – Sourcecode 2013-04-22 14:15:21

2

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

void InsertNode(const Item<int> & item) 

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

否则,你可以让MyQueueNode类模板。

+0

谢谢。使MyQueue和Node成为类模板解决了这个问题。 – Sourcecode 2013-04-22 13:12:12

相关问题