Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] In DLL mit Objekten aus Hauptprogramm arbeiten



DFYX
18.11.2010, 00:56
Folgendes Szenario: ich habe ein C++ Programm, das diverse Plugins aus DLLs lädt. Das funktioniert soweit schon ganz gut. Allerdings sollen Diese Plugins von sich aus auch mit Objekten aus dem Hauptprogramm arbeiten können. Beispielsweise das globale Logger-Objekt mitverwenden. Fällt jemandem was besseres ein, als eine Art Wrapperklasse, die entsprechende Funktionspointer mitbekommt?

In etwa so (ungetestet)

#ifndef LOGGERWRAPPER_H
#define LOGGERWRAPPER_H

// Erspart mir, immer class Logger zu schreiben, wenn ich den Logger selbst nicht includen will
typedef class Logger Logger;

class LoggerWrapper
{
private:
void (Logger::*logPointer)(char *message);
Logger *logger;
public:
LoggerWrapper(Logger *logger)
{
this->logger = logger;
logPointer = &Logger::LogMessage; // Klappt das in dem Kontext überhaupt? Im Zweifelsfall Pointer public machen und von außen setzen
}

void LogMessage(char *message)
{
(logger->*logPointer)(message);
}
};

#endif // LOGGERWRAPPER_H

Wie gesagt, ist nicht getestet und ich bin mir auch nicht sicher, ob das so tut, wie ich mir das denke.

DFYX
18.11.2010, 01:33
Nevermind: virtuelle Methoden funktionieren einwandfrei. Einmal close bitte.