经过大量的阅读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文件知道这些类的接口。
我将这个.so文件从Process_Wrapper
(Process_Wrapper::function2
)的成员函数中调用并传递给.so一个指针 - this
。所以,我认为共享对象会知道类Process_Wrapper
的所有内容。
在.so文件中,我试图调用成员函数Process_Wrapper::GetOutputPortIDtoFifoMap
,这显然不起作用。所以,我想:
Fifo* (Process_Wrapper::*GetFifoMapping)(int) = p1->wptr->GetOutputPortIDtoFifoMap;
其中p1->wptr
正确返回一个指针Process_Wrapper
对象。
我迷失在这里。我对这个概念很陌生,这些例子并不直接回答这个问题。我该如何去做呢?另外,因为我使用C++ 0x/C++ 11,任何人都可以告诉我(最好)使用std :: bind或mem__fun_ref的解决方案吗?
编辑:好吧,我想我可以改进我的问题:我有一个类Myclass
,和对象myobject
,这是这个类的一个实例。 Myclass
有一个成员函数,接受一些参数,并返回一个PTRTYPE
类型的指针。如何提取Myclass
的成员函数以传递给另一个函数,以便它可以用作普通指针函数。或者,特别是:如何从绑定指针提取函数指针到成员函数?
你只是想传递一个方法指针,就是这样吗? – Geoffroy 2012-01-03 22:23:23
你从哪里学习C++? – StackedCrooked 2012-01-03 22:33:21
“如何从指向成员函数的绑定指针中提取函数指针?”你不能。 – 2012-01-03 22:43:48