In Klasse andere Klasse im Namespace aufrufen
-
Hallo zusammen,
ich habe 2 Klassen, eine Exceptionklasse "BaseException" und eine Logbuchklasse
"Log". Beide befinden sich in verschiedenen Dateien, Dekleration und Definition
in .h und .cpp getrennt. Beide befinden sich im namespace dlg.//exception.h #include"log.h" class Log; namespace dlg { class BaseException { //Members... public: void PrintToLog(); //weitere Funktionen } } //exception.cpp dlg::BaseException::PrintToLog() { dlg::Log::GetInst().LogException(*this); // <- Hier sagt er Fehler } //log.h #include"exception.h" class BaseException; namespace dlg { class Log { //members public: LogException(BaseException Expt); //weiter Funktionen } }
Die Zeile mit dem Fehler ist Markiert.
Fehler:
G:\Projekte\Dialogs\Exception.cpp(29) : error C2664: 'LogException' :
Konvertierung des Parameters 1 von 'class dlg::BaseException' in 'class
BaseException' nicht moeglichWenn ich den Namespace um BaseException weg mache gehts, das will ich aber nicht.
Darum würde ich gerne wissen, wie ich den Aufruf von LogException deklarieren
muss, damit er die Klasse im Namespace annimmt.
Oder ist das ein Designefehler ?[ Dieser Beitrag wurde am 07.06.2003 um 11:09 Uhr von C Newbie editiert. ]
-
Hm, ich bin da zwar kein Experte, aber mal sowas versucht?
namespace dlg { class Log { //members public: LogException(dlg::BaseException Expt); //weiter Funktionen } }
-
ich würd deine vorwärtsdeklaration von BaseException auch in den Namespace verlagern.
-
@TriPhoenix Dann kommt noch ein Fehler, das BaseException nicht im namespace dlg liegt.
Aber, wenn ich die Dekleration mit ins Namespace tu dann gehts prima.
thx an euch beide