编译错误:在此上下文中无法隐式捕获“this”
Posted
技术标签:
【中文标题】编译错误:在此上下文中无法隐式捕获“this”【英文标题】:Compilation error : 'this' cannot be implicitly captured in this context 【发布时间】:2016-07-26 16:57:35 【问题描述】:我正在尝试添加一个 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";
【问题讨论】:
旁注:在不同的上下文中,可能根本不需要捕获this
。例如,static
类方法和变量可以在 lambda 中使用,而无需捕获 this
。
【参考方案1】:
你需要捕获this
指针:
this->cv.wait(lk, [this]return ready;);
【讨论】:
以上是关于编译错误:在此上下文中无法隐式捕获“this”的主要内容,如果未能解决你的问题,请参考以下文章