- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
代码如下:
#include <iostream>
#include <thread>
struct PickRandomFile {
PickRandomFile() {
std::thread t1(taskScanPaths);
}
inline void taskScanPaths() {
// my task
}
};
int main() {
PickRandomFile pickRandomFile;
return 0;
}
msvc
说 PickRandomFile::taskScanPaths':非标准语法;使用“&”创建指向成员 ThreadTrigger 的指针
怎么了?我通常在 gcc
中执行此操作。
最佳答案
自由函数“退化为指针”(类似于数组)所以
std::thread t1(taskScanPaths);
如果 taskScanPaths
是一个免费函数就好了,它会和
std::thread t1(&taskScanPaths);
但是,对于类成员函数,您需要地址来获取指向成员函数的指针(并且您需要指定类),如
std::thread t1(&PickRandomFile::taskScanPaths,this);
另请注意,您需要将对象/指针传递给实例,以便线程可以实际调用该方法。
来自cppreference的一些相关引述:
Pointer to member functions
A pointer to non-static member function f which is a member of class C can be initialized with the expression &C::f exactly. Expressions such as &(C::f) or &f inside C's member function do not form pointers to member functions.
它没有明确提到 f
,但是因为 &f
没有形成指向成员函数的指针,所以可以安全地假设 f
也不形成指向成员函数的指针。
另一方面:
Pointers to functions
A pointer to function can be initialized with an address of a non-member function or a static member function. Because of the function-to-pointer implicit conversion, the address-of operator is optional:
关于c++ - 为什么 "non-standard syntax; use ' &' to create a pointer to member"在 CTOR 中使用线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58505257/
我是一名优秀的程序员,十分优秀!