我正在尝试在另一个线程中运行非静态成员函数。如果我走:
void *(PortManager::*innerAskPtr)() = &this->innerAsk;
QFuture<void> f = QtConcurrent::run(innerAskPtr);
它提示
ISO C++ 禁止使用不合格或带括号的非静态成员函数的地址来形成指向成员函数的指针。
但如果我删除这个额外的参考符号:
void *(PortManager::*innerAskPtr)() = this->innerAsk;
QFuture<void> f = QtConcurrent::run(innerAskPtr);
它是这样的
无法将“PortManager::innerAsk”从“void (PortManager::)()”类型转换为“void* (PortManager::*)()”类型
在右侧添加什么以在左侧获得这些额外的星星(*)?
但是,即使我能到达那里,也总会有另一个错误;关于运行(T(*)()):
调用 'run(void* (PortManager::*&)()) 没有匹配的函数
我很难理解这个参考是如何到达那里的......