base class undefined
-
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.
-
class Cc_SLMYs : public Cc_LogfileAnalyse //fehler anzeige
{fehler wird beschrieben mit 'Cc_LogfileAnalyse' : base classe undefined
das komische ist, wenn ich die includes in den hfiles rausnehem gibt es weniger fehler aber es sind die gleichen
-
nooby schrieb:
das komische ist, wenn ich die includes in den hfiles rausnehem gibt es weniger fehler aber es sind die gleichen
Wie können es die gleichen Fehler sein, wenn da weniger kommen? Möglicherweise hast du ja im Basis-Header irgendwelchen Mist gebaut, z.B. hinter der Klassendefinition das Semikolon vergessen - nach so einer Kleinigkeit kann der Compiler schonmal aus dem Takt geraten.
-
nein also ich find nix, was ich auch noch komisch fand das ich vorher einen fehler hatte wegen der expression von einem kontruktor, aber bi dem stimte auch alles..........
-
was ich au noch komisch finde sind die fehler wegen ctime obwohl die ja im stdafx drinnen sind.....
-
Sehr ausführliche Fehlermeldungen
Am besten kopierst du einfach mal das, was dir dein Compiler ausspuckt, hier rein.
-
ok, sorry
das wenn ich die base klasse niergendswo includiert habe:
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_intervall.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2065: 'test' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(58) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(58) : error C2146: syntax error : missing ';' before identifier 'test2'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(58) : error C2065: 'test2' : undeclared identifier
Cc_LogfileAnalyse.cpp
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_slmys.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_intervall.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_total.h(47) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_LogfileAnalyse.cpp(55) : error C2512: 'Cc_Total' : no appropriate default constructor available
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_LogfileAnalyse.cpp(71) : error C2512: 'Cc_Total' : no appropriate default constructor available
Cc_SLMYs.cpp
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_slmys.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(54) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(54) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(54) : error C2065: 'test' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(56) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(56) : error C2146: syntax error : missing ';' before identifier 'test2'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(56) : error C2065: 'test2' : undeclared identifier
Cc_Total.cpp
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_total.h(47) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(59) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(59) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(59) : error C2065: 'test' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(61) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(61) : error C2146: syntax error : missing ';' before identifier 'test2'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(61) : error C2065: 'test2' : undeclared identifier
Generating Code...
Error executing cl.exe.AnalyseToolTester.exe - 26 error(s), 0 warning(s)
-------------------------------------------------------------------------
mit basis klassen includes
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_slmys.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_total.h(47) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(126) : error C2146: syntax error : missing ';' before identifier 'IntervallStatistics'
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(126) : error C2501: 'Cc_Intervall' : missing storage-class or type specifiers
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(126) : error C2501: 'IntervallStatistics' : missing storage-class or type specifiers
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(53) : error C2512: 'Cc_LogfileAnalyse' : no appropriate default constructor available
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2065: 'test' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(58) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(58) : error C2146: syntax error : missing ';' before identifier 'test2'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(58) : error C2065: 'test2' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(84) : error C2512: 'Cc_LogfileAnalyse' : no appropriate default constructor available
Cc_LogfileAnalyse.cpp
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_slmys.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_intervall.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_total.h(47) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_LogfileAnalyse.cpp(55) : error C2512: 'Cc_Total' : no appropriate default constructor available
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_LogfileAnalyse.cpp(71) : error C2512: 'Cc_Total' : no appropriate default constructor available
Cc_SLMYs.cpp
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_intervall.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_total.h(47) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(124) : error C2146: syntax error : missing ';' before identifier 'SlmyStatistics'
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(124) : error C2501: 'Cc_SLMYs' : missing storage-class or type specifiers
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(124) : error C2501: 'SlmyStatistics' : missing storage-class or type specifiers
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(51) : error C2512: 'Cc_LogfileAnalyse' : no appropriate default constructor available
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(54) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(54) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(54) : error C2065: 'test' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(56) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(56) : error C2146: syntax error : missing ';' before identifier 'test2'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(56) : error C2065: 'test2' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_SLMYs.cpp(82) : error C2512: 'Cc_LogfileAnalyse' : no appropriate default constructor available
Cc_Total.cpp
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_slmys.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_intervall.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(125) : error C2146: syntax error : missing ';' before identifier 'TotalStatisics'
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(125) : error C2501: 'Cc_Total' : missing storage-class or type specifiers
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(125) : error C2501: 'TotalStatisics' : missing storage-class or type specifiers
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(56) : error C2512: 'Cc_LogfileAnalyse' : no appropriate default constructor available
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(59) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(59) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(59) : error C2065: 'test' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(61) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(61) : error C2146: syntax error : missing ';' before identifier 'test2'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(61) : error C2065: 'test2' : undeclared identifier
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Total.cpp(87) : error C2512: 'Cc_LogfileAnalyse' : no appropriate default constructor available
Generating Code...
Error executing cl.exe.AnalyseToolTester.exe - 44 error(s), 0 warning(s)
-
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_slmys.h(46) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_total.h(47) : error C2504: 'Cc_LogfileAnalyse' : base class undefined
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(126) : error C2146: syntax error : missing ';' before identifier 'IntervallStatistics'
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(126) : error C2501: 'Cc_Intervall' : missing storage-class or type specifiers
d:\hte_wsp\u\vobs\hte\code\common\checkworkloadanalysetool\analysetool\cc_logfileanalyse.h(126) : error C2501: 'IntervallStatistics' : missing storage-class or type specifiersWenn ich mir das ansehe, hast du vermutlich die Reihenfolge der Anweisungen vertauscht - du mußt erst den Basis-Header includen und danach die abgeleiteten Klassen definieren.
(eventuell sind bei dir auch Include-Guards hilfreich)
PS: CTime ist übrigens eine Klasse der MFC - wenn du eine eigene Variable CTime nennst, gibt es einen Namenskonflikt.
-
ok ich versuchs mal
ich wollte ja auch die klasse CTime benutzen, das ich nicht eine klasse von mir
-
kannst du mir ein beispiel zeigen ich versteh nicht ganz was du meinst. weil ich habe in den h files die basisklassen header zu oberst
-
Offenbar nicht, sonst würde er nicht erst die fehlende Basisklasse bemängeln und dann die Fehler aus dem Basis-Header bearbeiten.
//Basis-Header: #ifndef BASIS_H #define BASIS_H class Basis { //... }; #endif
//Basis-Implementation: #include "Basis.h" //...
//Kind-Header #ifndef KIND_H #define KIND_H #include "Basis.h" class Kind : public Basis { //... }; #endif
//Kind-Implementation #include "Kind.h" //...
-
habe ich gemacht geändert hat sich jedoch nix :S
-
was ich noch komisch finde das es immernoch ctime nicht erkennen will obwohl das eine klasse von mfc ist :S und einen stadart konstruktor besizt
-
vielleicht solltest du mal vollständigen (soweit relevant - d.h. #directiven und essentielle deklarationen) code (stdafx.h, basisklassenen-header und einen header einer der abgeleiteten klassen) posten
-
@Header-Aufteilung: So langsam komme ich mit deinem Kuddel-Muddel nicht mehr zurecht. Irgendwo ist da noch ein Fehler drin, den meine Kristallkugel leider nicht aufspüren kann.
*guckt sich nochmal die Fehlersammlung an*
Kann es sein, daß du im Basis-Header die abgeleiteten Klassen einbinden willst? Wenn ja, wozu ist das gut?@CTime: Ist vermutlich ein Folgefehler deiner vorigen Verwirrungen - nach einem Fehler endet der Compiler in einem undefinierten Zustand, wodurch er möglicherweise an der Stelle mit dem "CTime xyz;" nicht mit einer Variablendeklaration rechnet.
-
ok ich habe herrausgefunden an was das lag, ich hatte mit den unterklassen eine aggregation und wollte gleichzeitg sachen von der basisklasse vererben....hihi bitte nicht hauen...aber habe jetzt andere fehler
erst mal dieser hier:
svcrtd.lib(crtexe.obj) : error LNK2001: unresolved external symbol _main
Debug/AnalyseTool.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.aber die CTime fehler sind immernoch vorhanden. das verstehe ich einfach nicht
ein beispiel auzug:
Compiling...
Cc_Intervall.cpp
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2275: 'CTime' : illegal use of this type as an expression
c:\program files\devstudio6\vc98\mfc\include\afx.h(1532) : see declaration of 'CTime'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2146: syntax error : missing ';' before identifier 'test'
D:\HTE_WSP\U\VOBS\HTE\CODE\COMMON\CheckWorkloadAnalysetool\AnalyseTool\Cc_Intervall.cpp(56) : error C2065: 'test' : undeclared identifier
Error executing cl.exe.dabei benutze ich den default constructor und es geht gleich nicht .....
-
@Linker: Offenbar versuchst du, eine MFC-Anwendung für die Konsole zu complieren - da sucht der Linker nach der main(), die das Hauptprogramm erstellt.
@CTime: Gibt mal die Zeile, wo der Fehler auftritt - am besten mit der näheren Umgebung.