lineare Liste mit Template



  • Ich versuche eine dynamisch verwaltete Lineare Liste zu erstellen, die verschiedenste Datentypen verwalten kann.

    Also LISTE<int>, LISTE<char>, etc.

    in main.cpp:

    #include <cstdlib>
    #include <iostream>
    
    #include "knoten.h"
    #include "liste.h"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        Liste<int> intListe;
        Liste<char> charListe;
        Liste<double> doubleListe;
    
        Knoten<int> intKnoten;
        // etc.
    
        system("pause");     
    
        return EXIT_SUCCESS;
    }
    

    in liste.h:

    #ifndef LISTE_H
    #define LISTE_H
    
    using namespace std;
    
    template <class T> class Liste
    {
    	public:
    		// class constructor
    		Liste();
    		// class destructor
    		~Liste();
    };
    
    // class constructor
    template <class T> Liste<T>::Liste()
    {
    	// insert your code here
    }
    
    // class destructor
    template <class T> Liste<T>::~Liste()
    {
    	// insert your code here
    }
    
    #endif // LISTE_H
    

    in knoten.h:

    #ifndef KNOTEN_H
    #define KNOTEN_H
    
    using namespace std;
    
    template <class T> class Knoten
    {
    	public:
    		// class constructor
    		Knoten();
    		// class destructor
    		~Knoten();
    };
    
    // class constructor
    template <class T> Knoten<T>::Knoten()
    {
    	// insert your code here
    }
    
    // class destructor
    template <class T> Knoten<T>::~Knoten()
    {
    	// insert your code here
    }
    
    #endif // KNOTEN_H
    

    Ich habe zwar soweit noch nichts implementiert, bekomme aber so schon Linker-Fehler bei DevC++:

    [Linker error] undefined reference to `__cpu_features_init'
    ld returned 1 exit status
    C:\Dokumente und Einstellungen\Makefile.win [Build Error] [TemplateListe.exe] Error 1

    bzw. die folgenden Fehler beim Gnu-Compiler:

    C:\Dokumente und Einstellungen>gcc -o liste.exe main.cpp knoten.h liste.h
    knoten.h:6: error: syntax error before "namespace"
    knoten.h:6: warning: data definition has no type or storage class
    knoten.h:8: error: syntax error before '<' token
    knoten.h:18: error: syntax error before '<' token
    liste.h:6: error: syntax error before "namespace"
    liste.h:6: warning: data definition has no type or storage class
    liste.h:8: error: syntax error before '<' token
    liste.h:18: error: syntax error before '<' token

    Leider weiß ich nicht wo der Fehler liegt... könnt ihr mir helfen?

    Gruß, sunnymay!



  • #if !defined(LISTE_H__INCLUDED)
    #define LISTE_H__INCLUDED
    
    template <typename T>class list
    {
    public:
        Liste() {}
        ~Liste() {}
    
    protected:
        class node
        {
            node() {}
            ~node() {}
        } * m_begin;
    };
    
    #endif // LISTE_H__INCLUDED
    

    🙂



  • Das habe ich gerade ausprobiert, allerdings bekomme ich immer noch den gleichen Linker error 😞

    Woran könnte das denn liegen?



  • So wie das da steht willst du nen Fehler bekommen?!
    main.cpp

    #include <iostream>
    #include "list.h"
    
    int main()
    {
        list<int> list_int;
        list<char> list_char;
        list<double> list_double;
    
        std::cin.get();    
    }
    

    list.h

    #if !defined(LISTE_H__INCLUDED)
    #define LISTE_H__INCLUDED
    
    template <typename T>class list
    {
    public:
        list() {}
        ~list() {}
    
    protected:
        class node
        {
            node() {}
            ~node() {}
        } * m_begin;
    };
    
    #endif // LISTE_H__INCLUDED
    

    das geht zu 10000% 😉

    Also nochmal versuchen 🙂



  • Das ist ja gerade das Problem! Wenn ich simples copy&paste mache und dann kompiliere bekomme ich das:

    In file included from main.cpp:2:
    list.h:4: error: syntax error before '<' token
    list.h:15: warning: data definition has no type or storage class
    list.h:16: error: syntax error before '}' token

    mit DevC++ das gleiche.

    Ich habe mittlerweile auch schon DevC++ deinstalliert und neu installiert, aber keine Änderung.

    Ich habe gerade mal ältere Quellcodes getestet, bei denen Ähnliches passiert.
    DevC++ sagt:

    [Linker error] undefined reference to `__cpu_features_init'
    ld returned 1 exit status
    C:\Dokumente und Einstellungen\...\Makefile.win [Build Error] [Artikel.exe] Error 1

    Ich verzweifele gerade 😞



  • Möp... DevC++ runterschmeißen und Qualität aller MS (MS Visual C++ 2005 Express Edition) oder G++ drauf tun! Weiß nicht was du da für ne DevC++ Version hast aber scheint nicht mit Templates klar zu kommen ...



  • Tja, wer weiß woran es gelegen hat...

    habe nochmal DevC++ deinstalliert, neu installiert und nun funktioniert deine Version doch!

    Danke!


  • Mod

    sunnymay schrieb:

    C:\Dokumente und Einstellungen>gcc -o liste.exe main.cpp knoten.h liste.h
    knoten.h:6: error: syntax error before "namespace"
    knoten.h:6: warning: data definition has no type or storage class
    knoten.h:8: error: syntax error before '<' token
    knoten.h:18: error: syntax error before '<' token
    liste.h:6: error: syntax error before "namespace"
    liste.h:6: warning: data definition has no type or storage class
    liste.h:8: error: syntax error before '<' token
    liste.h:18: error: syntax error before '<' token

    Leider weiß ich nicht wo der Fehler liegt... könnt ihr mir helfen?

    Gruß, sunnymay!

    Header sind nicht zum Separatkompilieren da. Der Compiler beschwert sich über das using namespace std (was ohnehin im Header auf Namespaceebene nichts verloren hat) ohne vorherige Deklaration des Bezeichners std.



  • C:\Dokumente und Einstellungen>gcc -o liste.exe main.cpp knoten.h liste.h

    Nimm g++, um C++-Code zu kompilieren.


Anmelden zum Antworten