Дурацкая ошибка
От: Аноним  
Дата: 24.07.13 09:04
Оценка:
Убил два дня на отладку, пытаясь понять, почему код работает неправильно.
Ошибка была такая:

Y const & A::foo( X x )
{
    Y * pY = NULL;
    map<X,Y>::iterator mapIter = m_.find(x);
    // ...
    switch( ... )
    {
       case zzz:
       {
           // Здесь локальный итератор с тем же именем перекрывает объявленную ранее переменную того же типа.
           map<X,Y>::iterator mapIter = ... ;
           
           // Здесь я на автопилоте обращаюсь к объявленной ранее переменной
           pY = &mapIter->second;
       }
    }
}


Вопрос в том, каким мерами можно подстраховаться от подобных ошибок (опции компилятора, стиль кодирования)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.