无法使用函数指针调用函数

时间:2012-12-28 11:54:45

标签: c++ function-pointers

  

可能重复:
  How to call a function using pointer-to-member-function

Analyzer.h

class Analyzer
{
public :

    void viku();
    void Bibek();
    void vivek();
    void (Analyzer::*point)();

    Analyzer(){

    }
    ~Analyzer(){

    }

};

Analyzer.cpp

    using namespace std     
    #include"Analyzer.h"
    void Analyzer::viku(){
        cout<<"Hello viku";
    }
    void Analyzer::vivek(){
        point =&Analyzer::viku; 
        Bibek();   
    }
    void Analyzer::Bibek(){
           point();//Errror
        cout<<"Bibek";
    }

在编译期间,它显示以下错误:

  

错误C2064:term不计算为采用0参数的函数。

有人可以告诉我如何避免这种情况吗?

1 个答案:

答案 0 :(得分:3)

指向成员函数的指针与普通函数指针不同。您需要一个实例来调用它们:

#include <iostream>

class A
{
public:
  int foo()
  {
      std::cout << "A::foo here, you can have 42" << std::endl;
      return 42;
  }
};

int main ()
{
  int (A::* point)() = &A::foo;
  A a;

  (a.*point)();
}

在您的情况下,您需要执行以下操作:

(this->*point)()