2012-03-20 55 views
0

我正试图在将用于稍后在我的程序中调用函数的结构中存储指向成员函数的指针。将成员函数作为函数指针存储在C++中时出错

事情是这样的:

// abc.h 
namespace XYZ { 
typedef void func(const uint8_t *buf, int len); 
struct holder 
{ 
    // other members 
    func * storePtr; 
} 
} // end of namespace 

其他文件:

// pqr.h 
#include abc.h 
namespace XYZ { 
class pqr { 
    // data members and other functions 
    void func1(const uint8_t *buffer, int length); 
    void func2(func *section); 
    void func3(); 
    } 
} // end of namespace 

现在我的cpp文件需要存储此FUNC1的例子在我的结构成员storePtr

// app.cpp 
#include pqr.h 
void pqr::funct3() 
{ 
    // Do something 
    func2(func1); 
} 
void pqr::func2(func * section) 
{ 
    holder h; 
    h.storePtr = section; 
} 

但是我收到编译错误在“func2(func1);”作为 “错误C3867:‘PQR :: FUNC1’:函数调用缺少参数列表;使用‘& PQR :: FUNC1’创建成员指针”

我用& PQR ::界定范围,但它也不能解决我的问题,我无法理解要做什么。

回答

1

指向成员函数是不一样的东西指针正常功能 - 看看说明和示例在这里:http://msdn.microsoft.com/en-us/library/k8336763.aspx

+0

不过,我将如何调用成员函数从存储在结构中的函数指针? 如果我存储了创建的结构并稍后使用它来调用该函数。 – Garfield 2012-03-21 11:54:13

+1

如果它是一个非静态成员函数,则始终需要该对象能够调用它 - 该对象是函数的隐式参数。你既可以保存对象也可以保存结构中的指针,或者更改整个结构,以便可以使用静态成员 - 或者只是简单的函数。 – MiMo 2012-03-21 13:53:54