我知道这已经是一个长期讨论的话题,但我还没有找到满足我的答案.

简而言之:即使使用C 11的function :: target()功能,是不是可以将成员函数指针传递给c风格的方法?

以下代码不起作用:对mbf.target()的调用将返回0,从而生成SEGFAULT.我不明白为什么,因为我将成员函数绑定到泛型函数对象,所以类型应该没问题.

我做错了什么或者我想做一些不可能的事情?

#include

using namespace std;

typedef void (*CBType)(int,int);

CBType myCB = 0;

void regCallback(CBType cb)

{

myCB = cb;

}

class A

{

public:

void memberCB(int a,int b) {}

void registerCallback()

{

auto mbMem = mem_fn(&A::memberCB);

function mbf =

bind(mbMem,*this,placeholders::_1,placeholders::_2);

regCallback(*mbf.target());

}

};

int main()

{

A inst;

inst.registerCallback();

}

c语言中target,C 11:使用std :: function :: target()指向成员函数的指针相关推荐

  1. 使用std::function 把类成员函数指针转换为普通函数指针

    前言 这是改造前一篇 设计模式  的基础,使通知者不必知道观察者的类名和函数名,只需要知道更新函数的原型即可. 开发环境:WIN7 32位 + VS2010 发现在VS2005中使用std::funt ...

  2. C++11中std::function的使用

    类模版std::function是一种通用.多态的函数封装.std::function的实例可以对任何可以调用的目标实体进行存储.复制.和调用操作,这些目标实体包括普通函数.Lambda表达式.函数指 ...

  3. 【C++】C++11的std::function和std::bind用法详解

    在设计回调函数的时候,无可避免地会接触到可回调对象.在C++11中,提供了std::function和std::bind两个方法来对可回调对象进行统一和封装. 可调用对象 C++中有如下几种可调用对象 ...

  4. C语言中task的用法,c – 在std :: packaged_task中使用成员函数

    我想做的应该很容易,但我不明白-- 我想要做的就是在后台启动一个类的成员函数 在某个特定的时间点.该功能的结果也应该是"外部"可用的.所以我想在构造函数中准备任务(设置future ...

  5. C++ 11三个新特性的简单使用 - std::function、lambda 表达式、智能指针

    使用Dev C++:先设置Dev C++ 支持 C++ 11:见此文后部: https://blog.csdn.net/bcbobo21cn/article/details/111466179 1 s ...

  6. C++11: std::function<void()> func

    std::function介绍 类模版std::function是一种通用.多态的函数封装.std::function的实例可以对任何可以调用的目标实体进行存储.复制.和调用操作,这些目标实体包括普通 ...

  7. c语言中5 2 11 意思,新概念第二册课后题答案详解:Lesson55

    新概念英语作为一套世界闻名的英语教程,以其全新的教学理念,有趣的课文内容和全面的技能训练,深受广大英语学习者的欢迎和喜爱.为了方便同学们的学习,新东方在线新概念英语网为大家整理了最全面的新概念第二册课 ...

  8. c语言中strtod用法,C语言进阶之路:strtod()函数的用法!

    函数原型: #include double strtod(const char *nptr, char **endptr); C语言及C++中的重要函数. 名称含义 strtod(将字符串转换成浮点数 ...

  9. c语言中count的头文件,C++ STL算法系列1---count函数

    一.count函数 algorithm头文件定义了一个count的函数,其功能类似于find.这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果. 编写程序读取一系列int型数据,并将 ...

最新文章

  1. 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作
  2. Linux df -h查看磁盘使用情况
  3. boost::noncopyable用法的测试程序
  4. Linux批量部署 EXPECT 使用
  5. php基础教程 第二步 通俗易懂的学习变量、常量与数据类型
  6. 怎么修改提交git是的用户名_git 修改提交邮箱以及用户名-亲测
  7. jdk Double类具体实现
  8. 区块链 xuperchain xuper-java-sdk 部署使用EVM 合约 教程
  9. PDCA循环和GTD时间管理
  10. Userland中debian系统打开chromium
  11. 不想在网易博客写技术文章了
  12. 3.9提取电话号的区号、电话号、分机号
  13. Apple开启双重认证过程
  14. window关闭烦人的右下角广告
  15. Davinci的异构多核间通信基础组件SysLink
  16. 目前Java开发人员需求大吗 Java就业方向是什么
  17. 英读廊——为什么夏天白天打瞌睡晚上却睡不着?
  18. heic(HEIF)格式图像处理(一)
  19. 赛题类型 Web、Crypto、Pwn、Reverse、Misc 各是指什么意思?
  20. JavaScript jq 三位分节法 input输入数字时每3位使用逗号隔开

热门文章

  1. 渗透测试学习笔记之案例二
  2. 使用一片74LS74实现四分频
  3. 记录自己一次搭建Zabbix及微信报警过程
  4. ethercat环境搭建(igh安装)
  5. python 怎么输入单引号_在python中如何输入单引号
  6. php如何登陆后才能看见,让WordPress的作者在后台只能看到自己的文章
  7. dovecot+mysql 空壳邮件
  8. dawang素材html5,我推荐 5 个 GIF 动图素材网站
  9. xls所在服务器没有响应,服务器里面的excel表格打不开是怎么回事?!excle表格打不开怎么回事...
  10. 吃一堑长一智!nodemysql同步查询