在一个名为Light
的类中,我有一个静态函数。
我想"火"来自它的代表,
Inside Light.h
static float intepreterDelegate(char *arg){
// here I need to call the function pointer inside Light itself
Light b;
return b.fpAction(arg); // ** error: "expected unqualified id"
};
float (*fpAction)(char*) = 0 ; // the actual pointer
我如何为此创建正确的语法?
b.(*fpAction)("arg");
修改
(b.*b.fpAction)(arg);
错误:右手操作员*为非。
答案 0 :(得分:1)
您的类型错误:
Properties
应该是
float (*fpAction)(char*) = 0 ; // the actual pointer
然后
float (Light::*fpAction)(char*) = 0 ; // the actual pointer
和
fpAction = &Light::myMethod;
答案 1 :(得分:1)
float (*fpAction)(char*) = 0 ; // the actual pointer
这会创建一个常规函数指针,而不是成员函数指针。 改为
float (Light::*fpAction)(char*) = 0 ;
在名为Light
b
实例上调用此函数指针
float result = (b.*b.fpAction)("arg");
P.S。 如果你想知道双b在那里做什么。 它真的是(b。*(b.fpAction))(“arg”); b.fpAction将指针标识为Light实例b的成员。 (b。*指针)(“arg”)在函数内使用'b'作为'this'值来调用functionpointer。