你可以使用带有std :: weak_ptr的C++ 11基于范围的for循环,而不是使用带lambda的for_each,如下所示?
std::vector<std::weak_ptr<IObservable>> observers;
std::for_each(this->observers.cbegin(), this->observers.cend(),
[](const std::weak_ptr<IObservable>& _o)
{
auto observer = _o.lock();
if (observer)
{
observer->Notify()
}
});
Run Code Online (Sandbox Code Playgroud)
我不明白为什么不.你收到任何错误信息吗?
这个:
for( const auto& o: observers ) {
if( auto observer = o.lock() ) {
observer->Notify();
}
}
Run Code Online (Sandbox Code Playgroud)
应该工作正常......:D