COM-подобные интерфейсы предупреждают о не виртуальном деструкторе

Есть ли способ сказать gcc, что компилируемому абстрактному классу не нужен виртуальный деструктор (как никогда не бывает у COM-объектов)? Например, nsISupports всегда жалуется на отсутствующий виртуальный деструктор. Отключение предупреждения не поможет, так как у меня могут быть классы, не похожие на COM, где я хочу это предупреждение.

Так что __attribute__((com_interface)) устарел и изменил только макет vtable. Есть ли другой __attribute__, где я могу сказать компилятору, что не хочу, чтобы меня предупреждали об отсутствующем деструкторе в этом классе?

3 ответа

Недостающее предупреждение о виртуальном dtor есть по причине - главным образом потому, что это отладочный кошмар для отслеживания, особенно в большой и сложной базе кода
У вас может быть очень конкретная причина для этого, но спросите себя, что произойдет, если класс подвергнется рефакторингу, так что его использование изменится позже?

Я думаю, что вы должны пересмотреть возможность отключения этого предупреждения. Это там по причине. Сегодня нельзя помещать виртуальный деструктор в ваш класс, но вы не можете точно предсказать, как ваш класс будет использоваться в будущем.

Незначительные изменения в использовании класса могут привести к тому, что следующий разработчик потратит свои силы на несколько часов, пытаясь отследить утечку ресурсов. Сделайте этому человеку одолжение и сделайте деструктор виртуальным сейчас.

Также вы можете спросить себя

Что я получу, сделав его не виртуальным

Вы упомянули наличие абстрактного класса, поэтому я предполагаю, что он имеет хотя бы одну виртуальную функцию. Таким образом, создание виртуального деструктора не добавляет к объекту v-таблицу, а просто расширяет его, добавляя в него другого члена.

Я не вижу никакой реальной выгоды в том, чтобы сделать это не виртуальным. Только проблемы.

Вы, вероятно, хотите использовать пару диагностических прагм. В противном случае, #pragma GCC system_header отключает все предупреждения в данном файле.

Другие вопросы по тегам