Hi,
ich habe da ein Problem beim verwenden von Funktionspointern bei der
Übergabe bei einer Klasseninitalisierung. Ich habe mich hierbei an den
zweiten Forenbeitrag in diesem Link gehalten:
https://www.spieleprogrammierer.de/18-c-cplusplus-csharp-java-und-andere-programmiersprachen/6621-funktionszeiger-funktionen-als-parameter/
Folgendes Szenario:
Ich habe eine Klasse "Class":
1 | namespace Namespace
|
2 | {
|
3 | class Class
|
4 | {
|
5 | private:
|
6 | void(*FuncPtr)() = NULL;
|
7 | public:
|
8 | Class()
|
9 | {}
|
10 |
|
11 | Class(int value, void(*funcPtr)())
|
12 | {
|
13 | FuncPtr = funcPtr;
|
14 | }
|
15 | /*****/
|
16 | };
|
17 | }
|
Die Funktion wird so definiert und die Klasse so initalisiert:
1 | void Funktion()
|
2 | { /*****/ }
|
3 |
|
4 | int foo;
|
5 |
|
6 | Namespace::Class Klasse;
|
7 |
|
8 | void setup()
|
9 | {
|
10 | Klasse = Class(foo, void (*Funktion)()) /<<<<Fehler
|
11 | /****/
|
12 | }
|
Hier tauchen zwei Fehler auf, einer kommt vom Visual Studio, das
unterkingelt mir das Rückgabe-void mit dem Fehlertext:
"der Ausdruck vor den Klammern des sichtbaren Aufrufs muss einen
Funktionstyp (pointer-to-) aufweisen"
Der Compiler meldet mir folgenden Fehler:
"void value not ignored as it ought to be"
Wenn ich die void durch int ersetze, und natürlich für in die Funktion
ein return 0 einbaue, erhalte ich vom Visual Studio die gleiche
Fehlermeldung, der Compiler meldet allerdings:
"expression cannot be used as a function".
Was mache ich hier falsch?