Problem mit Vererbung von Klassentemplates
-
Hallo erstmal,
ich beschäftige mich zur Zeit das erste Mal mit Templateklassen und habe ein
einfaches Template erzeugt. Von diesem Template möchte ich jetzt durch Vererbung eine (oder mehrere) spezialisierte Klasse erzeugen und in dieser dann
die Methoden workStarted und workFinished mit einer Implementierung füllen!Das Template sieht wie folgt aus:
template<class T> class WorkerListener { public: WorkerListener(void) { // do nothing } virtual ~WorkerListener() { // do nothing } virtual void workStarted(const T* part) = 0; virtual void workFinished(const T* part) = 0; };Ich hab jetzt schon versucht eine Klasse zu erstellen, die von dem Klassentemplate erbt:
Die *.hpp
class CircleWorkerListener : public WorkerListener<Circle> { public: CircleWorkerListener(void); virtual ~CircleWorkerListener(); virtual void workStarted(const Circle* circle); virtual void workFinished(const Circle* circle); };Die *.cpp
#include "CircleWorkerListener.hpp" CircleWorkerListener::CircleWorkerListener(void): WorkerListener<Circle>() { // do nothing } CircleWorkerListener::~CircleWorkerListener() { // do nothing } void CircleWorkerListener::workStarted(const Circle* circle) { // do nothing } void CircleWorkerListener::workFinished(const Circle* circle) { // do nothing }Instanziieren tue ich ein Objekt von der vererbten Klassen folgendermaßen:
CircleWorkerListener* circleWorkerListener = new CircleWorkerListener();Bei der Übersetzung kommt allerdings immer folgender Fehler beim Linken und ich habe absolut keine Ahnung, wo der her kommt:
undefined reference to `CircleWorkerListener::CircleWorkerListener()'Könnt ihr mir da weiterhelfen oder habt ihr eine Idee, woran der Fehler liegen könnte. Gibts da irgendetwas, was ich übersehen habe??!
Mit freundlichen Grüßen
Soqinho
-
Ich sehe da kein Problem (abgesehen vom fehlenden delete
).Was benutzt du für einen Compiler? - Ich würde mal raten devcpp?
Wenn ja, nimm einen anderen, wie z.B Visual C++ Express Edition, oder Code::Blocks.
-
drakon schrieb:
Was benutzt du für einen Compiler? - Ich würde mal raten devcpp?
Dir ist doch wohl hoffentlich klar, das diese keine Compiler sind, sonder nun Entwicklungsumgebungen

-
KasF schrieb:
drakon schrieb:
Was benutzt du für einen Compiler? - Ich würde mal raten devcpp?
Dir ist doch wohl hoffentlich klar, das diese keine Compiler sind, sonder nun Entwicklungsumgebungen

Ja. Aber für einen Neuling wird die auseinandernahem wohl eher verwirren.

Aber auch die IDE ist nicht auf dem neusten Stand.
-
hast du die Objektdateien auch alle mitgelinkt?
/edit:
Ja. Aber für einen Neuling wird die auseinandernahem wohl eher verwirren.

Das sorgt dann vielleicht einmal für ne Frage "was ist ne IDE?" und dann ist die Sache geklärt. Wenn du Neulingen stattdessen IDEs als Compiler verkaufst ist die viel größere Verwirrung vorprogrammiert, wenn sich eine Unterscheidung einmal nichtmehr vermeiden lässt "aber ich dachte devcpp IST ein Compiler. HÄ???"
-
hast du die Objektdateien auch alle mitgelinkt?
Danke, der Kommentar hat mich darauf gebracht, dass ich ja mein Makefile noch anpassen muss. Daran lags

Ach ja, ich weiß zwar net, was devcpp ist, aber ich benutze hier gcc

MfG
Soqinho