Смысл предупреждения "declaration hides class member"
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 12.02.22 11:44
Оценка:
У MSVC++ с версий 19.xx появилось предупреждение 4458 (declaration of '...' hides class member). Предупреждение полезное, но выводится, в том числе, и для личных членов базовых классов, недоступных в текущем классе, чем сводит на нет всю инкапсуляцию:

class C1 {

  int i1;

};

class C2 : public C1 {

  int i2;

public:

  int Get (int i1) const { return i1 + i2; }

};


Мне одному кажется, что в таком варианте от предупреждения нет ни малейшего смысла, а лишь сплошной вред?

Кстати, давно уже есть подозрение, что ключом /W4, не говоря уже о /Wall, в MS пользуется очень ограниченная группа людей (и преимущественно на тестовых примерах), а подавляющее большинство ограничивается максимум /W3. Иначе невозможно объяснить подобные казусы, а также то, что во многих случаях оборачивание проблемного фрагмента в __pragma (warning (push)), __pragma (warning (disable: ...)) и __pragma (warning (pop)) не позволяет подавить предупреждения — только глобальным запретом.
warning 4458
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.