web-dev-qa-db-ja.com

コンパイルエラー: 'this'はこのコンテキストで暗黙的にキャプチャできません

スレッドを処理するためにcondition_variableを追加しようとしていますが、次の行でコンパイルエラーが発生します。

this->cv.wait(lk, []{return this->ready;});

変数this-> readyののように見えますが、 'this'は適切なスコープにありません。

JavaこれはTestThread.thisで処理できますが、C++でも同じことをしていますか?

void TestThread::Thread_Activity()
    {
        std::cout << "Thread started \n";
        // Wait until ThreadA() sends data
        {
            std::unique_lock<std::mutex> lk(m);
            this->cv.wait(lk, []{return ready;});
        }

        std::cout << "Thread is processing data\n";
        data += " after processing";
        // Send data back to ThreadA through the condition variable
        {
           // std::lock_guard<std::mutex> lk(m);
            processed = true;
           // std::cout << "Thread B signals data processing completed\n";
        }

    }
16
Ray

thisポインタをキャプチャする必要があります:

this->cv.wait(lk, [this]{return ready;});
37
m.s.