base class undefined
-
ich habe 4 klassen, eine davon ist die basis klasse von der die anderen 3 klassen abgeleitet sind, nur habe ich dauernt die fehler meldug "base class undefined" dabei fehlt bei dieser klasse nur paar kleine implementation im konstruktor. woran kann das liegen? ich habe in alle 3 abgeleitet klassen die basis klasse im header eingetragen
-
Um von einer Klasse abzuleiten, reicht eine Forward-Deklaration nicht aus. Da mußt du zumindest die komplette Klassendeklaration mitliefern.
(btw, ein kurzes Beispiel mit Quellcode ist sicher hilfreich, um dein Problem nachzuvollziehen)
-
wie wäre es mit einwenig code?
Du hast sicherlich irgendwas vergessen oder falsch gemacht.
-
CStoll schrieb:
Um von einer Klasse abzuleiten, reicht eine Forward-Deklaration nicht aus. Da mußt du zumindest die komplette Klassendeklaration mitliefern.
(btw, ein kurzes Beispiel mit Quellcode ist sicher hilfreich, um dein Problem nachzuvollziehen)
Hm nicht unbedingt. Kommt drauf an(als jetzt auf die Header-Datei bezogen).
-
#include "stdafx.h"
class Cc_Intervall : public Cc_LogfileAnalyse
{public:
//---- CONSTRUCTORS --------------------------------------------------------
Cc_Intervall ();
Cc_Intervall (const Cc_Intervall& copyObject);//copy constructor
//---- DESTRUCTOR ----------------------------------------------------------
virtual ~Cc_Intervall();//destructor
//---- OPERATORS -----------------------------------------------------------
Cc_Intervall& operator = (const Cc_Intervall& assignedObject);// gleich operatorbool operator == (Cc_Intervall object2);
bool operator != (Cc_Intervall object2);
//---- ACCESS METHODS ------------------------------------------------------
CString getWas();
CTime getVom();
CTime getBis();
CTimeSpan getTimeDifference();
unsigned int getEintraege();
unsigned int getFailed();
float getFailedPercent();
CTimeSpan getJobTime();
CTimeSpan getMemberBiggestIntervall();
CTime getTimeOfBiggestIntervall();
CTimeSpan getMaxIntervallOf2OkJobs();
CTime getTimeOfMaxIntervallOf2Jobs();
unsigned int getFailedJobSerie();
//---- ACTION METHODS ------------------------------------------------------
void setTheLastTimeRegistration();
void numberOfFailedEntries();
void jobTime();
void biggestIntervall();
void maxIntervallBetweenOKjobs();
void maxFailedSerie();
void firstTimeRegistration();
protected:private:
CString Was;
CTime Vom;
CTime Bis;
CTimeSpan TimeDifference;
unsigned int Eintraege;
unsigned int Failed;
float FailedPercent;
CTimeSpan JobTime;
CTimeSpan BiggestIntervall;
CTime TimeOfBiggestIntervall;
CTimeSpan MaxIntervallOf2OkJobs;
CTime TimeOfMaxIntervallOf2Jobs;
unsigned int FailedJobSerie;};
-
Also da benötigst du zumindest noch ein #include "LogfileAnalyse.h" vor der Deklaration (oder wie immer du die Datei genannt hast, in der die Cc_LogfileAnalyse Klasse deklariert ist). Weil für den Bau der abgeleiteten Klasse benötigt der Compiler auch die Information, wie die Basisklasse aussieht (welche Member? sind einige der hier genannten Methoden virtuell geerbt? ...?).
-
aha, ok. alle methoden sind virtuell vereerbt, dieses stück code ist jetzt von einer der unterklassen
-
nooby schrieb:
aha, ok. alle methoden sind virtuell vereerbt, dieses stück code ist jetzt von einer der unterklassen
Ja, das weißt du - aber woher soll dein Compiler das wissen? Aus dem Code-Fragment, das du gepostet hast, kann man das jedenfalls nicht herausfinden, deshalb noch ein letztes Mal:
#include "stdafx.h" #include "LofileAnalye.h" //ganz wichtig - Deklaration der Klasse Cc_LogfileAnalyse class Cc_Intervall : public Cc_LogfileAnalyse { //... };
-
ähm warum tust du die stdafx.h in der Header-Datei inkludieren??? Das macht man normalerweise in der cpp-Datei
-
das habe ich gemacht, aber diese fehlermeldung ist nicht verschwunden......das finde ich komisch
-
Hast du überhaupt die richtige Datei eingefügt? Und das bei allen drei abgeleiteten Klassen?
-
ja die basis klasse heisst Cc_LogfileAnalyse
-
Und in welcher Datei steht die Deklaration dieser Klasse (inklusive der Methoden)?
das finde ich komisch
Und ich finde es komisch, daß ich dreimal das gleiche erklären muß und wir immer noch keinen Schritt weiter sind
-
also die deklaration der klasse Cc_LogfileAnalyse ist Cc_LogfileAnalyse.h
-
nooby schrieb:
also die deklaration der klasse Cc_LogfileAnalyse ist Cc_LogfileAnalyse.h
Na bitte, dann mußt du genau diese Datei am Anfang der anderen Header-Dateien einbinden (-> #include "Cc_LogfileAnalyse.h").
-
aha jetzt sehe ich das problem, ich habe immer kranfhaft probiert die header datei der basis klasse in den h files der unterklasse zu includieren
-
habe jetzt zwar weniger fehler, aber die fehler meldung ist trozdem nicht weg :S
-
nooby schrieb:
aha jetzt sehe ich das problem, ich habe immer kranfhaft probiert die header datei der basis klasse in den h files der unterklasse zu includieren
ist doch richtig
// base.h class Base { }; // derived.h #include "base.h" class Derived : public Base { };
-
das hat ich schon vorher so jetzt habe ich aber immernoch die gleichen fehelr sogar mehrere
-
Kannst du mal den genauen Fehler angeben - inklusive der Zeile, in der er auftritt? Eventuell hast du dich beim Namen der Basisklasse nur verschieben - C++ ist sehr sensibel mit Groß- und Kleinschreibung.