OOP mit C++ Instanz in anderen Klassen verwenden



  • Hallo Leute,

    ich hab folgende Frage. Ich möchte in meiner Anwendung ein Error Log programmieren, das ich in jeder Klasse die ich verwende aufrufen kann um eine interne Fehlermeldung abzusetzen.

    Dazu hab ich mir eine einfach verkettete Liste programmiert die aus der Klasse Node (für jeden Listenknoten) und MessageLog (die eigentlich verkettete Liste) besteht.

    Dann erzeuge ich eine Instanz dieser MessageLog Klasse in
    CWinApp::InitInstance():

    BOOL CNetPrintApp::InitInstance()
    {	
             InitCommonControls();
    	CWinApp::InitInstance();
    	netprintlog = new MessageLog();
    	netprintlog->setLogMessage(0 , L"NetPrint v1.0 gestartet...");
    

    So mein Problem ist nur, das ich ja diese Instanz(netprintlog) ja auch in allen anderen Klassen meines Programms verwenden will.

    Ich habs versucht mit dem aufruf von: CNetPrintApp::netprintlog.setLogMessage(...) aber das funktioniert nicht, wär ja zu einfach.

    Kann mir bitte jemand verraten warum das so nicht funktionieren kann, bzw. wie man das ellegant löst?

    thx. Joe



  • Durch eine statische Variable (Singleton?). 🤡



  • 'netprintlog' ist eine Membervariable der Klasse, richtig? In dem Fall hat jedes Objekt dieser Klasse seinen eigenen MessageLog - und du mußt angeben, in wessen Log die Nachricht eingefädelt werden soll:

    theApp.netprintlog->setLogMessage(1,L"Ich bin allhier.");
    

    (Alternativ kannst du eine statische Variable/Singleton anlegen, die von allen Anwendern gefüllt werden kann)



  • ich und mein Brett vorm Kopf 😡

    ja hab total übersehn, das ich ja die Instanzvariable von meiner CWinApp Klasse nehmen muss. 😃

    Prinzipell war mein Gedankengang eh richtig, nur das Ende hat ned gepasst.

    thx. Joe


Anmelden zum Antworten