Funktionszeiger in Klassen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Funktionszeiger in Klassen

    Hallo Leute :) ,

    ich hab hier ein riessen Prob mit Funktionszeigern in einer Klasse.
    Bevor ich losleg wollte ich noch sagen, dass mir der Sinn bzw. der Unsinn meines kleinen Progs schon klar ist, ich weiss auch dass ich auf ganz anderem Wege zum Ziel kommen könnte aber der Code dient einzig und allein zum lernen !.

    Als erses hab ich einnkleines Prog ohne Klassen mit einem Funktionszeiger gebastelt, welches auch wunder bar funktioniert :leak: .
    Man muss der Fnkt berechne nur 3 Parameter übergeben 2 Integers zum rechnen und das was damit gemacht werden soll (addieren, multiplizieren ...),
    int(*waehle)(int, int) ist der Fnkt-Zeiger der dann auf die auszuführende Fnkt zeigt !

    Hier mal der funktionierende Code:

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int berechne(int a, int b, int(*waehle)(int, int));
    4. int addiere(int a, int b);
    5. int multipliziere(int a, int b);
    6. int subtrahiere(int a, int b);
    7. void main()
    8. {
    9. int Z;
    10. int Y;
    11. int X;
    12. X = berechne(10, 10,multipliziere);
    13. cout << "Das Ergebnis der Multiplikation ist : " << X << endl << endl << endl;
    14. Y = berechne(20, 10, subtrahiere);
    15. cout << "Das Ergebnis der Subtraktion ist : " << Y << endl << endl << endl;
    16. Z = berechne(20, 10, addiere);
    17. cout << "Das Ergebnis der Addition ist : " << Z << endl << endl << endl;
    18. }
    19. int addiere(int a, int b)
    20. {
    21. return a + b;
    22. }
    23. int multipliziere(int a, int b)
    24. {
    25. return a * b;
    26. }
    27. int subtrahiere(int a, int b)
    28. {
    29. return a - b;
    30. }
    31. int berechne(int a, int b, int(*waehle)(int a, int b))
    32. {
    33. return waehle(a, b);
    34. }
    Alles anzeigen



    So jetzt hab ich versucht das ganze in ne Klasse zu werfen.
    Das Funktioniert leider nicht :( , ich bekomme folgenden Fehler :
    :die: error C2065: 'multipliziere' : nichtdeklarierter Bezeichner :die:

    Hier der Code:

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. class cTest
    4. {
    5. public:
    6. cTest() {}
    7. ~cTest(){}
    8. int addiere(int a, int b)
    9. {
    10. return a + b;
    11. }
    12. int multipliziere(int a, int b)
    13. {
    14. return a * b;
    15. }
    16. int subtrahiere(int a, int b)
    17. {
    18. return a - b;
    19. }
    20. int berechne(int a, int b, int(*waehle)(int a, int b))
    21. {
    22. return waehle(a, b);
    23. }
    24. };
    25. void main()
    26. {
    27. cTest objTest;
    28. //
    29. // int Z;
    30. // int Y;
    31. //
    32. // Y = berechne(20, 10, subtrahiere);
    33. // cout << "Das Ergebnis der Subtraktion ist : " << Y << endl << endl << endl;
    34. //
    35. // Z = berechne(20, 10, addiere);
    36. // cout << "Das Ergebnis der Addition ist : " << Z << endl << endl << endl;
    37. int X;
    38. X = objTest.berechne(10, 10,multipliziere);
    39. cout << "Das Ergebnis der Multiplikation ist : " << X << endl << endl << endl;
    40. }
    Alles anzeigen

    Was ich mir unter Anderem überlegt habe ist : Die Klasse enthält einen Zeiger,
    also muss ich eine tiefe Kopier machen :confused: ???
    Wenn ja wie :confused: ?
    Bzw. wie krieg ich den Code mit der Klasse überhaupt zum laufen :confused: ?
    Bitte helft mir, mir raucht echt der Kopf :eek: !

    Vielen Dank schon mal für eure Mühe ;)
    Shadow Eater[/coderwiki]