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_Hin 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_HIch 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 1bzw. 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 '<' tokenLeider 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__INCLUDEDdas 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 '}' tokenmit 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 1Ich 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!
-
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 '<' tokenLeider 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.