Ich benutze MinGW unter Windows und Visual Studio 2008, beide liefern dieselbe Fehlermeldung.
Ich habe eine Basis Klasse, welche folgendermaßen deklariert ist:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
class DRIResource
{
public:
virtual ~DRIResource() {}
virtual const char* getResourceType() const = 0;
virtual bool less_than(DRIResource& b) const = 0;
protected:
};
|
Davon abgeleitet ist diese Klasse hier:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
class Sektor : public DRIResource
{
public:
Sektor();
virtual ~Sektor();
virtual const char* getResourceType() const {return "Sektor";}
virtual bool less_than(Sektor& b) const {return mID < b.mID;}
};
|
Soweit ist noch alles okay.
Nun habe ich eine Klasse, die wiederum davon abgeleitet wird:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
class SolarSystemSektor : public Sektor
{
public:
SolarSystemSektor();
virtual ~SolarSystemSektor();
virtual bool less_than(SolarSystemSektor& b) {return Sektor::less_than(b);}
};
|
Wo ich nun eine neue Instanz dieser Klasse mit new erzeugen will,
kommt dann dieser Compilerfehler:
MinGW:
error: cannot allocate an object of abstract type 'SolarSystemSektor'
SolarSystemSektor.h:2: note: because the following virtual functions are pure within 'SolarSystemSektor':
DRIResource.h: note: virtual bool DRIResource::less_than(DRIResource&) const
Visual Studio:
error C2259: 'SolarSystemSektor': Instanz von abstrakter Klasse kann nicht erstellt werden
2> aufgrund folgender Member:
2> "bool DRIResource::less_than(DRIResource &) const": ist abstrakt
2> DRIResource.h(43): Siehe Deklaration von 'DRIResource::less_than'
Dabei habe ich doch die Funktion in SolarSystemSektor deklariert.. (ganz davon abgesehen das sie das auch schon
in der Sektor Klasse ist).
Was stimmt da nicht? Könnt ihr mir einen Hinweis geben?