error: template argument erforderlich "struct List'

Ich versuche, um meine eigene Vorlage für eine Liste, die Klasse als Lern-übung. Ich habe ein paar Probleme mit der template-syntax, obwohl, und ich bin jetzt immer folgende Fehlermeldung..

main.cpp|Line 8|instantiated from here
error: template argument required for 'struct List'
In function 'int main()':
...

Soweit ich sagen kann, ich bin nicht falsch nichts, aber das ist mein erstes mal arbeiten mit Vorlagen und würde wirklich zu schätzen, jemanden, der durch und lassen Sie mich wissen, was ich falsch mache.

Liste.hpp:

#if !defined _LIST_HPP_
#define _LIST_HPP_

#include "Node.hpp"

///since we're creating a template everything must be defined in the hpp

template <typename ListType>
class List
{
   public:
      List();
      bool Empty();
      void PushFront();
      void PushBack();
      void PopBack();
      Node<ListType>& GetHead();

   private:
      int _size;
      Node<ListType>* _head;
      Node<ListType>* _tail;
};


///implement List class here
template <typename ListType>
List<ListType>::List() : _head(0), _tail(0), _size(0)
{
}
template <typename ListType>
bool List<ListType>::Empty()
{
   return _size == 0;
}
template <typename ListType>
void List<ListType>::PushFront()
{
   _head = new Node<ListType>( _head , 0 );
   if (!Empty())
      _head->_prev->_next = _head; //set previous nodes _next to new _head

   ++_size;
}
template <typename ListType>
void List<ListType>::PushBack()
{
   _tail = new Node<ListType>( 0 , _tail);
   if (!Empty())
      _tail->_next->_prev = _tail; //set old tails _prev to new tail

   ++_size;
}
template <typename ListType>
void List<ListType>::PopBack()
{

}
template <typename ListType>
Node<ListType>& List<ListType>::GetHead()
{
   return _head;
}

#endif //define

Knoten.hpp:

#if !defined _NODE_HPP_
#define _NODE_HPP_


template<typename NodeType>
class Node{
   public:
      Node( Node* prev = 0, Node* next = 0);
      void SetData(NodeType newData);
      void GetData();
   private:
      friend class List;

      NodeType _data;
      Node* _next;
      Node* _prev;

};


///implement Node

template <typename NodeType>
Node<NodeType>::Node(Node* prev, Node* next) : _prev(prev), _next(next)
{}
template <typename NodeType>
void Node<NodeType>::SetData(NodeType newData)
{
   _data = newData;
}
template <typename NodeType>
void Node<NodeType>::GetData()
{
   return _data;
}

#endif //define

Main.hpp

#include <iostream>
#include "List.hpp"
int main()
{
   List<int> testl;
      //test
      testl.PushFront();
      testl.GetHead().SetData(7); //Error thrown here??
      std::cout << test1.GetHead().GetData() << std::endl;

   return 0;
}
InformationsquelleAutor Holly | 2012-03-24
Schreibe einen Kommentar