002
06.03.2014, 12:07 Uhr
~Sam94
Gast
|
Danke für die schnelle Hilfe Ich habe erst kürzlich mit c++ angefangen und wohl die Syntax falsch im Kopf gehabt ^^
Allerdings habe ich jetzt leider ein anderes Problem: Ich erhalte beim Überschreiben der Funktionen folgende Fehler:
Code: |
------ Erstellen gestartet: Projekt: Game, Konfiguration: Debug Win32 ------ 1> linkedList.cpp linkedlist.cpp(119): error C2995: "bool End<T>::equals(T *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(19): Siehe Deklaration von 'End<T>::equals'
linkedlist.cpp(124): error C2995: "bool End<T>::equals(std::string *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(20): Siehe Deklaration von 'End<T>::equals'
linkedlist.cpp(130): error C2995: "End<T> *End<T>::add(T *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(12): Siehe Deklaration von 'End<T>::add'
linkedlist.cpp(135): error C2995: "End<T> *End<T>::addSorted(T *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(13): Siehe Deklaration von 'End<T>::addSorted'
linkedlist.cpp(140): error C2995: "End<T> *End<T>::search(T *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(14): Siehe Deklaration von 'End<T>::search'
linkedlist.cpp(145): error C2995: "End<T> *End<T>::search(std::string *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(15): Siehe Deklaration von 'End<T>::search'
linkedlist.cpp(150): error C2995: "End<T> *End<T>::remove(T *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(16): Siehe Deklaration von 'End<T>::remove'
linkedlist.cpp(156): error C2995: "void List<T>::add(T *)": Funktionsvorlage wurde bereits definiert. linkedlist.h(44): Siehe Deklaration von 'List<T>::add'
|
Mein Quellcode sieht wie fogt aus:
linkedlist.h
C++: |
... template <class T> class End { public: End() {} ~End() {} virtual End<T>* add(T* elem); //Z12 virtual End<T>* addSorted(T* elem); virtual End<T>* search(T* elem); virtual End<T>* search(std::string* name); virtual End<T>* remove(T* elem); virtual End<T>* remove(std::string* elem); virtual End<T>* getNext() {return 0;} virtual bool equals(T* elem) {return false;} virtual bool equals(std::string* name) {return false;}
};
template <class T> class Node : public End<T> { public: Node(T* elem, End<T>* next); ~Node(); T* getElem() { return elem;} End<T>* getNext() { return next;}
protected: End<T>* next; T* elem; }; ... template <class T> class List { public: ... virtual void add(T* elem); //Z44 ... };
template <class T> class PriorityList: public List<T> { };
template <class T> class Stack: public List<T> { };
|
linkedlist.cpp
C++: |
template <class T> bool Node<T>::equals(T* elem) { return *(this->elem) == *elem; } // Z119
template <class T> bool Node<T>::equals(string* elem) { return *(this->elem) == *elem; } //Z124
// End template <class T> End<T>* End<T>::add(T* elem){ return new Node<T>(elem, this); } //Z130
template <class T> End<T>* End<T>::addSorted(T* elem){ return new Node<T>(elem, this); } //Z135
template <class T> End<T>* End<T>::search(T* elem) { return 0; } //Z140
template <class T> End<T>* End<T>::search(string* name) { return 0; } //Z145
template <class T> End<T>* End<T>::remove(T* elem) { return 0; } //Z150
// PriorityList template <class T> void PriorityList<T>::add(T* elem) { first = first->addSorted(elem); } //Z156
// Stack template <class T> void Stack<T>::add(T* elem) { first = new Node<T>(elem, first); }
|
Interessant ist dabei auch, dass bei PriorityList ein Fehler ausgegeben wird, aber bei Stack nicht, obwohl beides gleich aufgebaut ist?! Für erneute Hilfe wäre ich sehr dankbar |