2016-05-18 16 views
0

私のクラスMainWindow(これはQtプロジェクト)の一部ではない関数を書く必要がありますスレッド内ではMainWindowのメンバーを使用する必要があります。ここで私が書いたコードは次のとおりです。'this'のメンバの参照をstd :: threadのパラメータに渡す

void nameChange(TMAPI *tmapi) { 
    tmapi->writeString(0x001bbbc2c, qPrintable(n)); 
} 

void MainWindow::on_button_clicked() { 
    std::thread id(nameChange, this->tmapi); 
    id.join(); 
} 

私は(彼らはファイル<functional>内のコードの異なる行に同じエラーが、ポイントです)このことから2つのエラーを取得:

error: no type named 'type' in 'class std::result_of<void (*(TMAPI))(TMAPI*)> 

ようnameChangeを呼び出しますこれは動作しているようです:

TMAPI tmapi; 
std::thread id(nameChange, &tmapi); 

どのように私は、現在のオブジェクトの(this年代)に渡す場所を作業する最初の方法を得ることができますトンのインスタンスmapi?ありがとう。

+0

をそれはTMAPI、ノーポインタです。 –

+0

ああ、あなたは私を持っています。パラメータを '&this-> tmapi'に変更しました。ありがとう! –

答えて

3

nameChangeは、TMAPI *である。あなたはそれをTMAPIに渡そうとしています。したがって、超不可解なエラーが:

error: no type named 'type' in 'class std::result_of<void (*(TMAPI))(TMAPI*)> 

result_ofメタ関数はresult_of<F(Args...)>のように使用されます。この場合、そのタイプはvoid(*)(TMAPI*)TMAPIと呼ぶことを示していますが、これは有効なものではありません。

機能が期待するようなので、ただのポインタを渡します

std::thread id(nameChange, &this->tmapi); 
関連する問題