Как удалить указатель на класс без виртуальных функций и без наследования - PullRequest
0 голосов
/ 16 января 2019

Я не хочу переписывать деструктор класса как виртуальный, потому что он не имеет подклассов и виртуальных функций и не должен иметь.

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

Есть ли способ подавить предупреждение "-Wdelete-non-virtual-dtor" и сообщить компилятору, что здесь нет наследования?

1 Ответ

0 голосов
/ 16 января 2019

Пометить класс как final (из C ++ 11).

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

Ссылка: https://en.cppreference.com/w/cpp/language/final

...