Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [g++] сгенерировать warning... 
V
    Опции темы
JackYF
Дата 19.10.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



... если в производном и базовом классах объявлены переменные с одинаковыми именами.

-Wredundant-decls, -Wshadow, -Wextra, -Wall - не генерят, gcc 4.1.1.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 19.10.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 19.10.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



Цитата(MAKCim @  19.10.2007,  19:21 Найти цитируемый пост)
а почему должен быть Warning?

Имхо, потому, что я вряд ли хотел такое поведение, скорее я хотел объявить одно поле, но по ошибке объявил его дважды в двух местах.

Ну и по свежим следам - после 2-х дней отладки бага, почему в конструкторе родителя я присваиваю полю значение, а в методе производного класса пытаюсь обращаться к этому полю, а оно содержит какую-то гукню, я бы очень хотел такой warning.
Даже не по-дефолту и даже не в -Wall, а отдельным -W<...>, но хотелось бы.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 19.10.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



JackYF
тогда смотри в мане все -W*
если не найдешь, значит нет  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 19.10.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



Цитата(MAKCim @  19.10.2007,  19:46 Найти цитируемый пост)
тогда смотри в мане все -W*

та вот смотрел, не нашёл. Поэтому и запостил вопрос.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bsa
Дата 24.10.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



JackYF, имхо, просто неверно инициализировать переменные базового класса из потомка. Уж лучше сеттером или конструктором базового класса это делать.
А на счет варнинга - вряд ли найдешь. Это не только не нарушение, это вполне легитимное действие. Сам подумай, если базовый класс содержит в приватной зоне переменную X, а ты в производном 3-го порядка решил ввести тоже переменную X, то тебя компилятор поругает. И в итоге, у тебя при сборке будет куча совершенно бессмысленных варнингов в каждом месте включения хидера производного класса. Тебе оно надо?
Приведу аналогию: никто не запрещает пользоваться оператором goto, но почему-то никто без серьезной причины его не использует. Почему? А потому, что это затрудняет понимание кода. Но когда ты его использовал и у тебя начались глюки (из-за, допустим, полной потери читабельности кода) ты же не просишь, чтобы компилятор ругался на, допустим, переход за оператор new?

Это сообщение отредактировал(а) bsa - 24.10.2007, 11:42
PM   Вверх
JackYF
Дата 24.10.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



Цитата(bsa @  24.10.2007,  11:38 Найти цитируемый пост)
имхо, просто неверно инициализировать переменные базового класса из потомка.

я не инициализирую переменные базового класса из потомка.

А по теме - я с твоими доводами согласен.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0685 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.