无法调用指向成员函数的指针

时间:2015-05-10 21:19:23

标签: c++ member-function-pointers

我试图调用指向成员函数的函数指针,我得到错误

  

错误3错误C2064:term不评估为0的函数   参数

  

错误3错误C2171:' *' :对于&f; :: foo_t

类型的操作数非法

我的代码看起来像

class Foo
{
   void stuff();
   void more_stuff();
   void my_func();

   typedef void(Foo::* func_t)(void);
   func_t fptr;
};

void Foo::my_func()
{
   //do some stuff
}

void Foo::stuff()
{
   fptr = &Foo::my_func;
}

void Foo::more_stuff()
{
   if(fptr != 0)
   {
       (*fptr)(); //error C2171: '*' : illegal on operands of type 'Foo::func_t
       (fptr)(); //term does not evaluate to a function taking 0 arguments
   }
}

有人能在这看到这个问题吗?

1 个答案:

答案 0 :(得分:0)

正确的语法是

(this->*fptr)();

这是必需的,因为它是成员函数指针,您需要在使用fptr时明确提供一个实例。可能看起来编译器已经可以使用隐式*this,但这不是标准所说的,因此您需要手动处理它。