c++怎样将指向【成员函数】的指针强转成指向【普通函数】的指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++怎样将指向【成员函数】的指针强转成指向【普通函数】的指针相关的知识,希望对你有一定的参考价值。

假设函数的参数表、返回值都相同。
比如,如何将void (MyClass::*func)(int)转成void(*func)(int)

// 可以,如果在vs2008下面,则要用到tr1,如果在vs2012下,则在命名空间std下面,有相应函数,这要用到std::function和std::bind(vs2012里面),示例如下:
#include <iostream>
#include <functional>
#include <memory>

class MyClass

public:
MyClass();
~MyClass();
void func(int nInterger)

std::cout<<nInterger<<std::endl;
;
;

void main(void)

std::function<void(int)> func;
MyClass a;
func = bind(&MyClass::func, &a, std::placeholders::_1);
func(1000);
// 输出1000

// 下面是一个例子
http://blog.csdn.net/ch2065/article/details/12853195

参考技术A 试试定义成静态成员函数 参考技术B 貌似不可以这样转换的吧。。为什么要这样子转换呢追问

openGL的回调函数要求某个类型的函数指针,而我现在希望再对应事件时调用一个类的成员方法。另外,我希望回调函数的注册放在类的构造方法中

以上是关于c++怎样将指向【成员函数】的指针强转成指向【普通函数】的指针的主要内容,如果未能解决你的问题,请参考以下文章

C++指向对象成员函数的指针

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

c++类的成员函数指针如何转为普通指针

C++ 指向成员函数指针问题

C++ Primer 5th笔记(chap 19 特殊工具与技术)将成员函数用作可调用对象

C++成员函数指针指向全局函数指针