【发布时间】:2015-10-28 09:35:44
【问题描述】:
我有一个带有run() 非静态成员函数的Worker 对象。
一个对象已创建:
Worker * worker = new Worker();
在做:
std::thread(Worker::run, worker);
在 MinGW-w64 (gcc 4.9.1) 但在 Ubuntu 的 linux (gcc 5.2.1) 下编译(工作),我得到编译错误:
Invalid use of non-static member function
代码用-std=gnu++11编译
我知道在 MinGW 的情况下,指向成员函数的指针有一个带有Worker * this 参数的签名,允许像静态函数指针一样使用它。为什么在 linux 5.2.1 gcc 中禁止这样做,我应该怎么写?
编辑:我可以使用 lambda 或在 Worker::run 之前添加 & 来解决此问题,但各种 gcc 版本是否接受它的问题仍然存在。这是 MinGW 还是 gcc 4.9.1 的错误?
【问题讨论】:
标签: c++ gcc member-function-pointers