他のスレッドで非静的メンバー関数を実行しようとしています。もし私が行くならば:
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::*)()」に変換できません
これらの追加の星 (*) を左側に追加するには、右側に何を追加しますか?
しかし、それでも、そこにたどり着いたとしても、常に別のエラーがあります。run(T(*)()) について:
'run(void* (PortManager::*&)()) の呼び出しに一致する関数がありません
この参照がどのようにそこに到達したかを理解するのは頭がおかしいです...