gpt4 book ai didi

c++ - 传递指向成员函数的指针在 MinGW-w64 中编译但在 gcc 中不编译

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:03 27 4
gpt4 key购买 nike

我有一个 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 错误吗?

最佳答案

你需要使用

std::thread(&Worker::run, worker);

live example

关于c++ - 传递指向成员函数的指针在 MinGW-w64 中编译但在 gcc 中不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com