Problem beim Vererben einer Klasse
-
Hallo!
Ich bin vor kurzem von Delphi auf c++ umgestiegen und habe jetzt ein Problem: Ich habe eine Klasse von der ich eine andere ableite. Bei der Abgeleiteten aber möchte der Compiler anscheinend den Constructor nicht akzeptieren, zumindest bekomme ich den Fehler:
error C2226: syntax error : unexpected type 'std::string'#include <string> class CPrlException { public: CPrlException(const std::string &strFile, unsigned int nLine, const std::string &strError); void DisplayMessageBox(); void WriteToLog(); virtual void GenerateText(); // m_strError evtl. verändern std::string m_strError, m_strFile; unsigned int m_nLine; }; class CPrlHrException: CPrlException { public: CPrlHrException(const std::string &strFile, unsigned int nLine, const std::string &strError, const HRESULT hr); // FEHLER };Vielen Dank schonmal
Pearly
-
Probier mal, obs geht wenn du aus
class CPrlHrException: CPrlExceptionclass CPrlHrException: public CPrlExceptionmachst.
Kann sein, dass da nochwas falsch ist, aber das muss jedenfalls geändert werden.
Mit dem "public" gibst du an, dass- public-Elemente der Basisklasse auch in der abgeleiteten Klasse public sind
- protected-Elemente der Basisklasse auch in der abgeleiteten Klasse protected sind
Alternativ hast du zwei Möglichkeiten:
- protected: public --> protected, protected --> protected
- private: public --> private, protected --> private
-
Hmm hat leider nichts verändert aber troztdem thx
Pearly
-
Sind beide Klassen in der gleichen Datei und sieht diese genau so aus wie in deinem ersten Beitrag gepostet?
-
Anders gesagt: Der gepostete Code ist korrekt, der Fehler liegt woanders

-
Hallo
Ja, wenn ich alles rausnehme was ich nicht gepostet hatte (#ifndef etc., ein #include), kommt der Fehler nach wie vor. Dass es sich um einen Constructor handelt scheint der Compiler doch zu erkennen, dass steht da nämlich wenn ich vor ihm ein int setze. (constructor with return type)
Abgesehen von dem Syntax Error kommen übrigens nocherror C2238: unexpected token(s) preceding ';'
(in der selben Zeile) underror C2511: 'CPrlHrException::CPrlHrException(const std::string &,unsigned int,const std::string &,const HRESULT)' : overloaded member function not found in 'CPrlHrException'
bei der Implementierung des ConstructorsPearly
-
Pearly schrieb:
Ja, wenn ich alles rausnehme was ich nicht gepostet hatte (#ifndef etc., ein #include), kommt der Fehler nach wie vor.
Das hilft aber nicht weiter. In dem gezeigten Code ist kein Fehler (wenn man von der fehlenden Definition des Typen HRESULT mal absieht, irgendjemand wird halt windows.h einbinden). Möglicherweise steckt er in einem Header, der davor eingebunden wird. Zeig ein vollständiges Beispiel, das den Fehler reproduziert.
-
@MFK:
ich denke, es ist die fehlende "windows.h"
-
Ja, es funktioniert jetzt!

Danke für die schnelle Hilfe!Pearly