![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
... если в производном и базовом классах объявлены переменные с одинаковыми именами.
-Wredundant-decls, -Wshadow, -Wextra, -Wall - не генерят, gcc 4.1.1. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
JackYF,
а почему должен быть Warning? без оператора :: в методах производного класса будет использоваться поле этого класса, с оператором - поле базового -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Имхо, потому, что я вряд ли хотел такое поведение, скорее я хотел объявить одно поле, но по ошибке объявил его дважды в двух местах. Ну и по свежим следам - после 2-х дней отладки бага, почему в конструкторе родителя я присваиваю полю значение, а в методе производного класса пытаюсь обращаться к этому полю, а оно содержит какую-то гукню, я бы очень хотел такой warning. Даже не по-дефолту и даже не в -Wall, а отдельным -W<...>, но хотелось бы. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
JackYF,
тогда смотри в мане все -W* если не найдешь, значит нет ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
та вот смотрел, не нашёл. Поэтому и запостил вопрос. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
JackYF, имхо, просто неверно инициализировать переменные базового класса из потомка. Уж лучше сеттером или конструктором базового класса это делать.
А на счет варнинга - вряд ли найдешь. Это не только не нарушение, это вполне легитимное действие. Сам подумай, если базовый класс содержит в приватной зоне переменную X, а ты в производном 3-го порядка решил ввести тоже переменную X, то тебя компилятор поругает. И в итоге, у тебя при сборке будет куча совершенно бессмысленных варнингов в каждом месте включения хидера производного класса. Тебе оно надо? Приведу аналогию: никто не запрещает пользоваться оператором goto, но почему-то никто без серьезной причины его не использует. Почему? А потому, что это затрудняет понимание кода. Но когда ты его использовал и у тебя начались глюки (из-за, допустим, полной потери читабельности кода) ты же не просишь, чтобы компилятор ругался на, допустим, переход за оператор new? Это сообщение отредактировал(а) bsa - 24.10.2007, 11:42 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |