从静态函数调用函数指针

时间:2016-08-04 09:59:49

标签: c++

在一个名为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);

错误:右手操作员*为非。

2 个答案:

答案 0 :(得分:1)

您的类型错误:

Properties

应该是

float (*fpAction)(char*) = 0 ; // the actual pointer

然后

float (Light::*fpAction)(char*) = 0 ; // the actual pointer

fpAction = &Light::myMethod;

Demo

答案 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。