c funktionsaufruf mit c++ methode als paramter
-
Hallo,
bei untenstehendem Programm möchte ich die funktion testfunkt aufrufen.
mit einer c funktion als paramter funktioniert es aber mit einer c++ methode als parameter nicht....
weiss jemand warum???danke sagt oli
class Sampleclass {
public:
Sampleclass() // default constructor
~Sampleclass(){}; // destructorint funkt();
private:
};
#endif
//constructor
Sampleclass::Sampleclass()
{}
//Aufruf der festen C funktion mit dieser methode als parameter funktioniert nicht!!!!
int Sampleclass::funkt(void)
{
cout <<"hallo"<<endl;
return 0; //OK
}//Aufruf der festen C funktion mit dieser funktion als parameter funktioniert
void spassfunkt(void)
{
cout <<"mist"<<endl;}
//angenommen feste c Funktion die nicht geändert werden kann
int testfunkt(void (*func)(void))
{cout <<"lalaaa"<<endl;
return 0;
}int main()
{Sampleclass a;
cout <<"ich ruf die Funktion auf "<<a.funkt()<<endl;testfunkt(spassfunkt); // ich rufe testfunkt mit der spassfunkt als parameter auf -->funktioniert
testfunkt(Sampleclass::funkt); //Zeile 67 hier liegt der fehler was muss ich ändern damit ich wie in der
//zeile darüber testfunktmit der der funkt methode als Parameter aufrufen kann??return 0;
}Compiler Fehlermeldung :
In functionint main()': :67: error: no matches converting function \
funkt' to type `
void (*)()'
.cc:33: error: candidates are: int Sampleclass::funkt()
-
1. da steht irgendwo ein #endif ohne #if...
2. du musst elementzeiger benutzen. da musst du aber leider die funktion verändern, sonst geht das nicht.
-
ja if....
steht ganz oben hab ich leider net reingeschrieben....das ist auch net das problem...
hm geht des sonst echt net mist
aber danke mal was sind denn elementzeiger??
danke mal
-
in diesem fall könntest du sicher auf zeiger verzichten.
Die syntaxhervorhebung im forum zu benutzen ist vielleicht auch etwas hilfreich.
-
Ja sorry syntax hervorhebung hab ich vergessen...
auf Zeiger verzichten geht leider hab das Problem ja schon auf dieses einfache Beispielprogramm reproduziert......danke euch dennoch oli
-
auf zeiger verzichten geht leider net meinte ich
-
aber du musst die c-funktion umbauen oder eine andere funktion nehmen! da c ja kein oop kennt kannst du demnach auch keine member-pointer benutzen...
-
Damit man seinen Geist erweckt,
die Loesung in nem Raestel steckt,
schaust du in diese Seite rein,
wird dein Programm bald fertig sein.Tip: & hilft