经过大量阅读here和here后,我仍然无法让我的代码正常工作。这是问题所在:
我有两个班级,先进先出:
#ifdef __cplusplus
extern "C" {
#endif
class Fifo
{
public:
Fifo(int len);
~Fifo();
void AddTokens(void* buffer, unsigned len);
private:
// some variables here
};
#ifdef __cplusplus
}
#endif
和另一个类 Process_Wrapper:
#ifdef __cplusplus
extern "C" {
#endif
class Process_Wrapper
{
public:
Process_Wrapper(const std::string process_name);
Fifo* GetOutputPortIDtoFifoMap(int portID);
virtual ~Process_Wrapper();
protected:
private:
//some variables here
};
#ifdef __cplusplus
}
#endif
成员函数Process_Wrapper::GetOutputPortIDtoFifoMap
返回一个指向类的初始化对象的指针Fifo
。
现在,我有一个共享对象 (.so),它使用类头文件编译Fifo
并Process_Wrapper
包含在内。也就是说,.so 文件知道这些类的接口。
Process_Wrapper
我从( )的成员函数调用这个 .so 文件Process_Wrapper::function2
并将指针传递给 .so - this
。所以,我假设共享对象会知道关于类的一切Process_Wrapper
。
在 .so 文件中,我试图调用成员函数Process_Wrapper::GetOutputPortIDtoFifoMap
,这显然不起作用。所以,我尝试了:
Fifo* (Process_Wrapper::*GetFifoMapping)(int) = p1->wptr->GetOutputPortIDtoFifoMap;
where正确p1->wptr
返回指向Process_Wrapper
对象的指针。
我在这里迷路了。我对这个概念很陌生,这些例子并没有直接回答这个问题。我该怎么做呢?
另外,由于我使用的是 C++0x/C++11,任何人都可以告诉我(最好)使用 std::bind 或 mem__fun_ref 的解决方案吗?
编辑:好的,我想我可以完善我的问题:我有一个 classMyclass
和一个 object myobject
,它是这个类的一个实例。Myclass
有一个成员函数,接受一些参数,并返回一个类型的指针PTRTYPE
。如何提取Myclass
要传递给另一个函数的成员函数,以便它可以用作普通的指向函数的指针。或者,具体来说:如何从指向成员函数的绑定指针中提取函数指针?