文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++ 成员函数指针 转 C函数指针

C++ 成员函数指针 转 C函数指针

时间:2010-04-13  来源:gogozhaoxinfeng

C++ 成员函数指针 转 C函数指针

http://plainmind.spaces.live.com/blog/cns!E27C33778F7E30FD!327.entry

上网友文章指出 指向成员函数的指针并非指针,是一个类内偏移

C++ 普通成员函数不能直接转成C 风格的函数指针。

但是C++的static 类成员函数可以直接转化成C风格的函数指针。这样当要使用C风格的函数指针时候,通过中间 static 类成员函数 间接调用普通成员函数。

比如使用C 库时候,可能需要C风格的函数指针做回调,例如pthread_create 就需要一个

void* (*func) (void*); 的函数指针,要把一个类成员函数填进去就只能通过static 成员函数了。当然在模块了直接声明 static  void* call_back(void*) 也可以;

下面贴一个我自己测试时候的代码。

可以 g++  编译运行 。

class CFun

{
public:
typedef void (CFun::*CFunPtr )();
public:
void print()
{
cout <<"CFun::print...\n";
}
static void* get(void* ptr)
{
cout <<"CFun::get...\n";
CFun* tmp_ptr = reinterpret_cast<CFun*>(ptr);
tmp_ptr->print();
return NULL;
}


};

int main( int argc , char* argv[])
{
CFUNCPTR main_ptr =NULL;
main_ptr = &CFun::get;
main_ptr(&main_ptr);
return 0;
}

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载