2013-04-22 5 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

+0

오류입니다. 오류가 발생한 줄이 도움이됩니다. – rerun

답변

1

수업을 다시 디자인하는 것이 좋습니다.

template<class T> 
class MyQueue { 

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

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

private: 
    Node * _root; 
}; 

P. 미안해, 내 영어로.

+0

고마워요. 제안한대로 수정했습니다. – Sourcecode

2

Item는 형식이 아닙니다, 그것은 클래스 템플릿입니다. 템플릿 매개 변수를 제공해야합니다. 이 경우, int :

void InsertNode(const Item<int> & item) 

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

그렇지 않으면, 당신은 MyQueueNode 클래스 템플릿을 만들 수 있습니다.

+0

감사합니다. MyQueue와 Node를 클래스 템플릿으로 만들어 문제를 해결했습니다. – Sourcecode

관련 문제