Russian Qt Forum
Ноябрь 24, 2024, 01:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виртуальные деструкторы  (Прочитано 6816 раз)
Steven_Orko
Гость
« : Июнь 27, 2006, 21:38 »

Проясните, плиз, кто пользуется Линуксом и версией Qt 3.x.x. При разработке программ на указанной платформе компилятор мне сыпет варнинги по поводу того, что в некоторых классах Qt имеются виртуальные функции, но деструктор не объявлен виртуальным. Не надо меня посылать курить стандарт, что типа, если предок имеет виртуальный деструктор, то и все его потомки тоже. Дело как раз в том, что многие классы имеют предка с невиртуальным деструктором. Щас могу сказать точно про класс QSqlDatabase. Это все я смотрел в исходниках.
Теперь вопрос. Это у меня одного так или нет? Это вообще нормальная ситуация?
Стоит ли править headers или просто надо отключить именно эти предупреждения (а их очень) много, т.к. проекты большие)? Как, кто знает?
Записан
Grigory
Гость
« Ответ #1 : Июнь 28, 2006, 09:33 »

такая ситуация возникает с gcc 4.x  Там они это сделали варнингом, что в общем, правильно. Можешь юзать gcc 3.x, варнингов не будет, ну, или переписать проект с использованием qt4  Подмигивающий  А вообще можно указать  компилятору уровень выводимых предупреждений.
Записан
Steven_Orko
Гость
« Ответ #2 : Июнь 28, 2006, 19:52 »

Было бы хорошо, если переписать проект на 4ую серию, только нельзя это. Военные меня не проймут.

Цитата: "Grigory"
А вообще можно указать  компилятору уровень выводимых предупреждений.

Конкретно про эти варнинги можешь сказать, как их отключить?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Июнь 28, 2006, 21:27 »

gcc -Wall -W - так выводит все варнинги

man gcc - искать по этим ключам
Записан
QCasper
Гость
« Ответ #4 : Июнь 28, 2006, 23:46 »

Цитата: "Grigory"
или переписать проект с использованием qt4  Подмигивающий


фигня, в четверке гцц тоже выдает такой варнинг, а вот msvc не выдает Улыбающийся
Записан
Grigory
Гость
« Ответ #5 : Июнь 29, 2006, 09:51 »

по gcc4 не могу сказать сейчас ничего, т.к он у меня на домашней машине, но в gcc3 есть такой ключик:
 
Код:
-Wnon-virtual-dtor (C++ only)
           Warn when a class appears to be polymorphic, thereby requiring a
           virtual destructor, yet it declares a non-virtual one.  This warn-
           ing is enabled by -Wall.


попробуй gcc -Wno-non-virtual-dtor

проверить как работает сейчас не могу, к сожалению.

добавлено спустя 7 минут:

 
Цитата: "QCasper"
Цитата: "Grigory"
или переписать проект с использованием qt4  Подмигивающий


фигня, в четверке гцц тоже выдает такой варнинг, а вот msvc не выдает Улыбающийся

По-моему человек вполне определенно заявил, что пользуется Linux, при чем здесь msvc? Насчет четверки может быть и так, не проверял. Просто видел где-то упоминание, что в qt4 все нормально компилится с gcc4. Но конечно могу быть не прав  Улыбающийся .
Записан
Steven_Orko
Гость
« Ответ #6 : Июнь 29, 2006, 20:36 »

to Grigory
Спасибо за совет, завтра попробую в g++ 4.0.1 )))
Записан
Steven_Orko
Гость
« Ответ #7 : Июль 04, 2006, 18:32 »

Попробывал указанный Grigory ключ. Не сработало. Вопрос остается открытым.
Записан
D_N_S
Гость
« Ответ #8 : Июль 05, 2006, 12:57 »

В тему виртуальных деструкторов.
Был переопределен комбобокс - AdvCombo. В окне (порождено от ui) был членом класса обычный комбобокс, который потом в рантайм удалялся и на его месте new-ится свой MegaCombo.
У QComboBox деструктор НЕвиртуальный. Вопрос - почему вызывается деструктор от !AdvCombo???
Записан
Steven_Orko
Гость
« Ответ #9 : Июль 05, 2006, 19:37 »

to D_N_S
Потому что QComboBox унаследован от QObject, у которого деструктор виртуальный. Стандарт гласит, что если предок имеет виртуальный деструктор, то все его потомки тоже будут иметь виртуальный деструктор,даже если он таковым не объявлен.
Записан
D_N_S
Гость
« Ответ #10 : Июль 06, 2006, 12:19 »

Steven_Orko, спасибо.

P.S. А ларчик просто открывался оказывается )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.