Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » funktionen mittels pointer übergeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.02.2003, 09:55 Uhr
Alexander L.



hallo alle, kann mir wer bei folgenden problem weiterhelfen. hab folgende definition in einem *.c file --> c-Code


Code:
typedef void yyy(int nId, ConnectionState State);
BOOL MyInit(yyy*pStateChange);


dann habe ich ein *.cpp file --> c++ code, in dem ich das header des *.c files inkludiere. ich habe dort eine fkt welche wie folgt aussieht:


Code:
void xxx(int nId, ConnectionState State)
{
...........
}


und ruf diese dann folgend auf

Code:
MyInit(xxx);


das funktioniert so auch wunderprächtigt, mein problem ist jetzt aber nur, wie ich die funktion xxx in eine klasse stecken kann und dann an myinit übergeben. es wäre zwar möglich diese fkt. innerhalb der klasse auf static zu setzen, aber das wll ich ja vermeiden, da ich mehrere instanzen anlege.

wenn jemand eine idee hat -->super, ansonsten wäre ich über all informationion von so funktionsübergabn mittels pointer bzw. generelle information c/c++ kombination dankbar

Dieser Post wurde am 20.02.2003 um 10:00 Uhr von Alexander L. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.02.2003, 16:56 Uhr
virtual
Sexiest Bit alive
(Operator)


Wenn Die Funktion yyy nicht Statisch ist, dann muß ihr implizit der Pointer zur Klasse übergeben werden, dh Du müsstest an das myinit die Instanz mitgeben:

C++:
#include <iostream>

class Klasse
{
public:
    void func1(char* state) {
        std::cout << "func1: this:" << this
                  << ", state=" << state << std::endl;
    }
    void func2(char* state) {
        std::cout << "func2: this:" << this
                  << ", state=" << state << std::endl;
    }
};

typedef void (Klasse::*FunktionsTyp)(char*);

void myinit(Klasse* k, FunktionsTyp f)
{
    char* str = "irgendwas";
    (k->*f)(str);
}


int main()
{
    Klasse k1;
    Klasse k2;
    myinit(&k1, &Klasse::func2);
    myinit(&k2, &Klasse::func1);
}


Oder habe ich Dich jetzt falsch verstanden? Ansonsten bietet die STL auch noch eigenige Möglichkeiten (guckmal in den Header <functional>, allerdings muß ich gleich weg, deshalb Beispiel nur auf Anfrage und damit später.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: