Problem mit Überladen von Funktion
-
Hallo,
möchte die Funtion OnConnect von CSocket überladen, mit folgenden aufruf.
m_pSocket->OnConnect = &CMyOwnClass::OnConnect;CMyOwnClass::OnConnect ist folgendermassen definiert.
privat: void nConnect( int nErrorCode );leider bekomme ich folgenden Fehler.
error C2659: '=' : overloaded function as left operandKann mir jemand helfen oder ist das Überladen nicht möglich?
Thx
-
Ich denke mal, es ist schon möglich, aber dein Ansatz ist nicht das, wie man es macht.
Du machst einfach eine Funktion mit den selben Parametern, dem selben Rückgabetyp und dem selben Namen in deine Klasse. DANN ist die Funktion der Basisklasse überladen.

-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
//doppelpost
-
e=mc² schrieb:
Hallo,
ich möchte ....So etwas habe ich noch nie gesehen. Seit wann kann man Funktionen einander zuweisen? Bitte belehrt mich, falls es doch gehen sollte.
Deine neue Klasse muss von der Basis (hier CSocket) abgeleitet sein, dann kannst du 'OnConnect' lokal, d.h. in deiner eigenen Klasse überschreiben bzw. überladen.
MyClass : public CSocket{ public: OnConnect(); }; // implementiertung MyClass::OnConnect(){ // code für neue OnConnect Methode CSocket::OnConnect(); // aufruf der Basismethode falls du willst }Hope that helped.
-
Genau das möchte ich, ich will das anstatt die OnConnect Funktion von CSocket meine
aufgerufen wird.Mit Borland CppBuilder gab es bei anderen Sachen keine Probleme.
siehe hier, fallst du das noch nicht kennst
http://www.c-plusplus.net/tuts/cpp/cpp_functionpointers_eng.pdf
-
Functionpointers haben mit überladung aber nur sehr entfernt was zu tun. ( Thread Titel )
Kurt
-
Ja ist richtig, der Titel bezieht sich mehr auf die Fehlermeldung.