|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
Виртуальные методы без деструкторов07.08.2019, 06:03. Показов 2986. Ответов 34
Метки нет (Все метки)
Знаю что хочу странного, но все же. Можно ли как-то объявить класс с виртуальными методами. но без деструктора и чтоб компилятор не плевался варнингами? Средствами языка, а не отключив варнинги в компиляторе.
Предупреждая вопрос нафиг надо - хочу выделять память из пула, а потом вместо удаления отдельных объектов, грохнуть сам пул. Разумеется, чтобы это сделать, нужно чтобы все объекты были trivially destructible. А для этого у них не должно быть никакого деструктора. Предупреждая возражение "а вдруг случайно какому-то потомку не тривиальный деструктор добавишь" - а я static_assert подопру.
1
|
||||||
| 07.08.2019, 06:03 | |
|
Ответы с готовыми решениями:
34
Виртуальные методы Виртуальные методы |
|
Комп_Оратор)
|
|||
| 07.08.2019, 19:52 | |||
|
Я просил все ///////// закомментить - Добавлено через 1 минуту
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 07.08.2019, 19:55 [ТС] | |
|
0
|
|
|
Комп_Оратор)
|
|||||||
| 07.08.2019, 19:57 | |||||||
|
Думаю вы неровно закомментил. Вот так я хотел:
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.08.2019, 19:59 [ТС] | ||
|
0
|
||
|
Комп_Оратор)
|
|||||||
| 07.08.2019, 20:10 | |||||||
![]() Вы правы. Я напутал что-то. Стало быть вопрос о наследовании - моя ошибка. Значит без наследования не прокатит. Пардон - Не пойму куда смотрел! ![]() И знаю ведь, что вызов по указателю (без vtable) вообще не зависит от адреса, - только от типа. А от адреса может зависеть корректность контекста и соответственно возможность креша. То есть можно и
А как на счёт того что delete для базового не компилируется?
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.08.2019, 20:14 [ТС] | ||
|
Но как и сказано в стартпосте, удалять объекты по одному через delete и не планируется. так что void operator delete(void*)=delete и все.
0
|
||
|
Комп_Оратор)
|
||
| 07.08.2019, 20:21 | ||
|
Добавлено через 2 минуты Ошибка C2280 "BaseNoDestructable::~BaseNoDestructable (void)": предпринята попытка ссылки на удаленную функцию console_empty ...\main.cpp
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.08.2019, 20:24 [ТС] | ||
|
0
|
||
|
Комп_Оратор)
|
||||||||
| 07.08.2019, 20:32 | ||||||||
Добавлено через 1 минуту
0
|
||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 07.08.2019, 20:39 [ТС] | |||
|
0
|
|||
|
Комп_Оратор)
|
|||
| 07.08.2019, 21:31 | |||
|
А про G++ я написал, потому что вы говорите, что оно с варнингом, компилится. Не компилится. Renji, я пытаюсь смоделировать ситуацию:
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||||
| 07.08.2019, 21:43 [ТС] | ||||||||
|
Деструктор не задан пользователем (not user-provided). Деструктор не виртуальный. Если есть базовые классы и члены класса, для них условия выше применяются рекурсивно. Кратко говоря, ни один из образующих объект классов не должен иметь явно прописанного деструктора. Тогда его можно прибить через сишный free, даже если там виртуальные методы.
1
|
||||||||
|
Комп_Оратор)
|
|
| 07.08.2019, 23:27 | |
|
Пример не о том. За разъяснение - спасибо. То есть, явно объявленный деструктор - уже не тривиален. Как-то странно слова сцеплены. Но раз так написано, - нужно блюсти. Пути стандарта неисповедимы.
0
|
|
| 07.08.2019, 23:27 | |
|
виртуальные методы Виртуальные методы Виртуальные методы виртуальные методы Наследование и виртуальные методы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|