Предупреждение GCC объявление ‘x’ затеняет члена класса y

#c #gcc #lambda

#c #gcc #лямбда

Вопрос:

У меня есть лямбда-выражение, объявленное в функции-члене вызываемого класса KoalaClass . Компилятор предупреждает меня, что объявление ‘vertices_’ затеняет член ‘KoalaClass’. vertices_ является членом вызываемого класса KoalaClass .

 std::find_if(vertices_.begin(), vertices_.end(), [amp;sourceName, this](koalaGraph::PVertex constamp; vertices_) {return sourceName == vertices_->info.name;}
  

Может ли кто-нибудь объяснить, почему это происходит, и если я неправильно закодировал лямбда-выражение?

Комментарии:

1. Вероятно, вы хотите назвать параметр вашего лямбда-выражения как «vertex», а не «vertices_».

2. Ваш код будет работать, но, как правило, не рекомендуется иметь коллекцию и элемент этой коллекции с одинаковыми именами, поэтому я бы предложил прослушать предупреждение и изменить внутреннюю переменную.