我有一个Worker
对象,其中包含run()
非静态成员函数。
已创建对象:
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错误?