Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Template will nicht so richtig

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.06.2008, 08:51 Uhr
~Wasingon
Gast


hi,

hab mir n e kleine Listenklasse mit Knoten und Iterator geschrieben und diese 3 Klassen möchte ich jetzt zusammen in ein template packen. Wenn ich das ganze dann kompiliere krieg ich tausende von fehlern.

hier mal meine template datei

C++:
#include <iostream>

template <typename T>
class Knoten
{
public:
   Knoten();
   Knoten(T val);
   ~Knoten();
   T getVal();
   Knoten * getNext();  
   void addToNext(T val);      
    
private:
   T m_iVal;
   Knoten * m_next;
};

Knoten::Knoten( ):m_next(0)
{
}

Knoten::Knoten(T val):m_iVal(val),m_next(0)
{
  std::cout<<"Konstruktor Knoten für Wert:"<<m_iVal<<std::endl;
}

Knoten::~Knoten()
{
     std::cout<<"Destruktor Knoten für Wert:"<<m_iVal<<std::endl;
}

Knoten * Knoten::getNext()
{
   return   m_next;
}

void Knoten::addToNext(T val)
{
   if(m_next == 0)
       m_next = new Knoten(val);
   else
       m_next->addToNext(val);
}

T Knoten::getVal() { return m_iVal;}

template <typename T>
class Iterator
{
  public:
     Iterator(Knoten * start);
     void inkrement();
     Knoten * getCurrentNode(){return m_iterator;}
    ~Iterator();
    
  private:
     Knoten * m_iterator;
};

Iterator::Iterator(Knoten * start)
{
  m_iterator = start;
}

void Iterator::inkrement()
{
   if (m_iterator->getNext() != 0)
     m_iterator = m_iterator->getNext();
}

template <typename T>
class Liste
{
  public:
     Liste();
    ~Liste();
     void add(T val);
     Iterator * createIter();
     Iterator * getIter() {return m_iterator;}
    
  private:
     void addToNext(T val);
     Knoten * m_first;
     Iterator * m_iterator;
};

Liste::Liste()
{
  m_first = 0;
  m_iterator = 0;
}

Liste::~Liste()
{
   Knoten * cur_node=0;
   Knoten * del_node =0;
  
   while (m_first != 0)
   {
    del_node = m_first;
    m_first = m_first->getNext();
    delete del_node;
   }

   if (m_first != 0)
       delete m_first;

  
}

void Liste::add(T val)
{
   if (m_first == 0)
       m_first = new Knoten(val);
   else
       m_first->addToNext(val);
}

Iterator * Liste::createIter()
{
   m_iterator = new Iterator(m_first);
   return m_iterator;
}





Template.cpp:19: Fehler: »template<class T> class Knoten« ohne Template-Parameter verwendet
Template.cpp:19: Fehler: ISO-C++ verbietet Deklaration von »Knoten« ohne Typ
Template.cpp: In function »int Knoten()«:
Template.cpp:19: Fehler: »int Knoten()« als andere Symbolart redeklariert
Template.cpp:4: Fehler: vorherige Deklaration von »template<class T> class Knoten«
Template.cpp:19: Fehler: nur Konstruktoren nehmen Basisinitialisierungen
Template.cpp: At global scope:
Template.cpp:23: Fehler: »template<class T> class Knoten« ohne Template-Parameter verwendet
......

jemand eine idee woran das liegt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.06.2008, 09:43 Uhr
Kest
saint


Hi!


C++:
#include <iostream>

template <typename T>
class Knoten
{
public:
   Knoten();
   Knoten(T val);
   ~Knoten();
   T getVal();
   Knoten * getNext();
   void addToNext(T val);

private:
   T m_iVal;
   Knoten * m_next;
};


template <typename T>
Knoten<T>::Knoten( ):m_next(0)
{
}

template <typename T>
Knoten<T>::Knoten(T val):m_iVal(val),m_next(0)
{
  std::cout<<"Konstruktor Knoten für Wert:"<<m_iVal<<std::endl;
}

template <typename T>
Knoten<T>::~Knoten()
{
     std::cout<<"Destruktor Knoten für Wert:"<<m_iVal<<std::endl;
}

template <typename T>
Knoten<T>* Knoten<T>::getNext()
{
   return   m_next;
}

template <typename T>
void Knoten<T>::addToNext(T val)
{
   if(m_next == 0)
       m_next = new Knoten(val);
   else
       m_next->addToNext(val);
}

template <typename T>
T Knoten<T>::getVal() { return m_iVal;}



template<class T>
class Iterator
{
  public:
     Iterator(Knoten<T> * start);
     void inkrement();
     Knoten<T> * getCurrentNode(){return m_iterator;}
    ~Iterator();

  private:
     Knoten<T> * m_iterator;
};


template<class T>
Iterator<T>::Iterator(Knoten<T> * start)
{
  m_iterator = start;
}

template<class T>
void Iterator<T>::inkrement()
{
   if (m_iterator->getNext() != 0)
     m_iterator = m_iterator->getNext();
}



template <typename T>
class Liste
{
  public:
     Liste();
    ~Liste();
     void add(T val);
     Iterator<T> * createIter();
     Iterator<T> * getIter() {return m_iterator;}

  private:
     void addToNext(T val);
     Knoten<T> * m_first;
     Iterator<T> * m_iterator;
};

template <typename T>
Liste<T>::Liste()
{
  m_first = 0;
  m_iterator = 0;
}

template <typename T>
Liste<T>::~Liste()
{
   Knoten<T> * cur_node=0;
   Knoten<T> * del_node =0;

   while (m_first != 0)
   {
    del_node = m_first;
    m_first = m_first->getNext();
    delete del_node;
   }

   if (m_first != 0)
       delete m_first;


}

template <typename T>
void Liste<T>::add(T val)
{
   if (m_first == 0)
       m_first = new Knoten<T>(val);
   else
       m_first->addToNext(val);
}

template <typename T>
Iterator<T>* Liste<T>::createIter()
{
   m_iterator = new Iterator<T>(m_first);
   return m_iterator;
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 26.06.2008 um 09:44 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.06.2008, 10:40 Uhr
kronos
Quotenfisch
(Operator)



Zitat von ~Wasingon:

Template.cpp:19: Fehler: »template<class T> class Knoten« ohne Template-Parameter verwendet
[...]
jemand eine idee woran das liegt?

Schwer zu sagen, vielleicht daran, dass du in Zeile 19 die template-Klasse Knoten ohne Template-Parameter verwendest?
-->

C++:
Knoten <T> *m_next;

--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: