使用C++11的线程库写程序的时候,使用类的成员函数作为线程函数,类成员函数形式大概如下:

class A {

public:

void foo()

{

cout << "foo!\n" ;

省略其他代码。。。

};

void start ();

};

在start()函数中想使用foo()函数作为线程函数,使用以下代码开启线程:

void start ()

{

thread t(&A::foo);

省略其他代码。。。

}

编译时报错为:

/usr/include/c++/4.8.2/functional: In instantiation of ‘struct std::_Bind_simple<std::_Mem_fn<void (slp::utils::config::*)()>()>’:
    /usr/include/c++/4.8.2/thread:137:47:   required from ‘std::thread::thread(_Callable&&, _Args&& ...) [with _Callable = void (slp::utils::config::*)(); _Args = {}]’

/usr/include/c++/4.8.2/functional:1697:61: 错误:no type named ‘type’ in ‘class std::result_of<std::_Mem_fn<void (slp::utils::config::*)()>()>’
       typedef typename result_of<_Callable(_Args...)>::type result_type;
                                                             ^
   /usr/include/c++/4.8.2/functional:1727:9: 错误:no type named ‘type’ in ‘class std::result_of<std::_Mem_fn<void (slp::utils::config::*)()>()>’
         _M_invoke(_Index_tuple<_Indices...>)

原因时函数为成员函数,有隐藏的this指针为参数,所以需要显示传入,修改为如下即可:

void start ()

{

thread t(&A::foo,this);

省略其他代码。。。

}

C++11线程函数类型错误相关推荐

  1. C++11向线程函数传递参数

    template< class Function, class... Args > explicit thread( Function&& f, Args&& ...

  2. c++11线程池的实现原理及回调函数的使用

    关于线程池 简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态.当有新的任务进来,从线程池中取出一个空闲的线程处理任务然后当任务处理完成之后,该线程被重新放回到线程池中,供其 ...

  3. catia二次开发:函数是否需要加括号 ,type类型 ,出现未定义变量类型错误,怎么破, 背景色设置 ,检查模块是否封闭 ,几何图形集是否存在某一个元素

    文章目录 函数是否需要加括号 type类型 出现未定义变量类型错误,怎么破 背景色设置 检查模块是否封闭 几何图形集是否存在某一个元素 函数是否需要加括号 type类型 出现未定义变量类型错误,怎么破 ...

  4. linux线程函数大全

    以下内容来源于网络,本人仅收集用于学习之用,如原作者有任何意见,可以给我留言,我会尽快将其删除. 索引: 1.创建线程pthread_create 2.等待线程结束pthread_join 3.分离线 ...

  5. 线程基本编程——线程函数大全

    索引: 1.创建线程pthread_create 2.等待线程结束pthread_join 3.分离线程pthread_detach 4.创建线程键pthread_key_create 5.删除线程键 ...

  6. 软件安全之代码注入技术 向目标 PE 文件注入 DLL notepad lpk.dll 远程线程函数 提权函数 OpenProcess VirtualAllocEx

    实验 4 代码注入技术 引言 1.实验说明 代码注入是将用户代码注入到其他进程或者可执行文件中,实现拦截目标进程运行过程的关键信息.改变目标进程或可执行文件原本执行流程等目的 2.实验目的 本实验通过 ...

  7. C++中 线程函数为静态函数 及 类成员函数作为回调函数(转载)

    C++中 线程函数为静态函数 及 类成员函数作为回调函数 线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运 ...

  8. 【Linux 线程】常用线程函数复习《一》

    1.pthread_create以及pthread_self函数 1 /**************************************************************** ...

  9. CreateThread创建线程函数详细讲解

    CreateThread CreateThread函数创建一个要在调用进程的地址空间中执行的线程.(MSDN讲解如下) 处理CreateThread ( LPSECURITY_ATTRIBUTES l ...

最新文章

  1. 阿里某员工发飙:给我一点陪家人的时间行吗?真的想走了!
  2. CKEditor的安装与基本使用
  3. 三层架构,Struts2,SpringMVC实现原理图
  4. Android CookieSyncManager同步cookie
  5. boolean类型_JS核心理论之《数据类型、类型转换、深浅拷贝与参数传递》
  6. 编程判断元素归类_如何使用jquery判断一个元素是否含有一个指定的类(class)...
  7. linux 协议错误,在linux客户机上:协议错误,Vagrant无法挂载同步的文件夹_vagrant_开发99编程知识库...
  8. 计算机 64位和32位区别,32位和64位的区别
  9. List和Set中忽略的方法addAll(Collection c)和retainAll(Collection c)
  10. halcon 差异模型 异物_基于HALCON的形状匹配算法的研究和心得总结
  11. ProjectWise 工程内容管理及协同工作解决方案系列网络讲座
  12. express入门学习(一)
  13. python ffmpeg mp3文件转为wav文件
  14. 解决IISASP调用XmlHTTP出现msxml3.dll (0x80070005) 拒绝访问的错误
  15. 轻蜗牛直租平台-业务背景介绍
  16. python九九乘法口诀_Python3 九九乘法口诀(99乘法口诀)
  17. 老挑毛u盘一键装系统计算机意外地,u盘装系统 重装Win7系统出现提示计算机意外的重新启动或遇到错误怎么处理 我已经删除了所有分...
  18. 胡昌泽 day3笔记
  19. UI设计色彩趋势总结
  20. 前一个问题的答案后续

热门文章

  1. i your application is running here: http://localhost:8080
  2. Bootstrap的代码显示
  3. Android-电池优化Doze和Standby模式-AlarmManager失效
  4. 大数据凉了?不,凉的是不合法数据公司
  5. spring中自定义对象交给spring容器管理的4种方式
  6. 区块链开发入门:基于以太坊智能合约构建 ICO DApp
  7. 基于机器学习与人工智能的数据(数据库+大数据)技术
  8. 【java毕业设计】基于javaEE+原生Servlet+jsp的人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统
  9. MAC Foxmail升级后邮件搜索功能失效了
  10. Steam好友隐身玩游戏?使用SteamWebApi获取好友的游戏时长,并用钉钉推送告诉你他在不在玩