Klassenstruktur Sockets
-
Hallo,
ich möchte gern verschiedene Sockets zu Beginn installieren. Alle Sockets sollen in einem separaten Thread initialisiert werden (mit CAsyncSocket aus der MFC).
Klassenstruktur:
class Socket : public CasyncSocket {};
class HttpSoc : public Socket {};
class SnmpSoc : public Socket {};
etc.Jede Klasse weist eine virtuelle Funktion InitInstance() auf, die alle spezifischen Sockets installieren soll.
m_sockThread = (Socket*)AfxBeginThread(RUNTIME_CLASS(Socket), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);Dadurch wird in der App.cpp der Socket-Thread gestartet; und die InitInstance() Funktion von der class Socket aufgerufen.
Wie kann ich innerhalb dieser class auf die virtuelle InitInstance() Funktion der verschiedenen abgeleiteten Klassen zugreifen?
BOOL Socket::InitInstance() { if(!HttpSoc::InitInstance()) return FALSE; }Anders herum von der abgeleiteten Klasse die Basisklasse bzw. deren Methoden aufzurufen funktioniert. Aber dann kann ich ja nicht alle Sockets in einer Funktion enablen...
Gruß
Andi
-
Möglicherweise hast du da einen Denkfehler drin. Es klingt nämlich sehr danach, als ob InitInstance static sein müsste. In diesem Fall kannst du es wie in deinem Beispiel machen.
Wenn InitInstance aber non-static und virtual ist, dann wird ohnehin die richtige InitInstance-Funktion der Nachfahrklasse aufgerufen.