|
1 / 1 / 0
Регистрация: 05.07.2013
Сообщений: 176
|
|
Почему при создании класса у абстракных классов по иерархии пусто в _vptr ?07.06.2015, 19:28. Показов 1304. Ответов 12
Метки нет (Все метки)
0
|
|
| 07.06.2015, 19:28 | |
|
Ответы с готовыми решениями:
12
Виртуальные функции при создании иерархии классов Торможение UI при хитрой иерархии классов Реализация иерархии классов на основе класса "Грузоперевозчик" |
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 07.06.2015, 20:22 | |||
|
0
|
|||
|
1 / 1 / 0
Регистрация: 05.07.2013
Сообщений: 176
|
||
| 07.06.2015, 20:27 [ТС] | ||
|
Tulosba, А что вам кинуть та ? Код большой
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 07.06.2015, 20:33 | |||
|
Тогда можно будет более предметно говорить о чем-то.
0
|
|||
|
1 / 1 / 0
Регистрация: 05.07.2013
Сообщений: 176
|
||||||||||||||||||||||||||||||||||||
| 07.06.2015, 20:39 [ТС] | ||||||||||||||||||||||||||||||||||||
|
Tulosba,
Строго по иерархии ниже: Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Пример:
0
|
||||||||||||||||||||||||||||||||||||
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
||||||
| 07.06.2015, 20:43 | ||||||
|
вообще выглядит странно. у вас кстати еще нет виртуальных деструкторов, но да ладно. учитывая что вы химичите с аллокаторами, может быть дело в этом. например выделили память, а сконструировать объект в этой памяти забыли. следующая строчка наводит на такие подозрения:
0
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 07.06.2015, 20:46 | |||
|
Указатель на таблицу виртуальных функций - штука сугубо внутренная для компилятора. С чего вообще ты решил его понаблюдать в отладчике?
0
|
|||
|
1 / 1 / 0
Регистрация: 05.07.2013
Сообщений: 176
|
|||||||||||
| 07.06.2015, 20:51 [ТС] | |||||||||||
|
Tulosba, а вот метод
Он не может получить элемент итератора, хотя перед входом в метод он есть, но после смены типа, он не может его прочесть. Вот в этому проблема. И ещё, до подключения аллокатора, всё исправно работало, но таблицу vptr я не проверял и тогда.
0
|
|||||||||||
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
||||||
| 07.06.2015, 20:54 | ||||||
|
попрбуйте плейсмент new добавить:
0
|
||||||
|
1 / 1 / 0
Регистрация: 05.07.2013
Сообщений: 176
|
|
| 07.06.2015, 21:36 [ТС] | |
|
Perfilov, а что вы тут сделали я не совсем понял ? Это помогло, теперь все верно, но теперь другая функция портит vptr, там придется сделать так же как и тут, как я понял.
0
|
|
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
| 07.06.2015, 21:49 | |
Сообщение было отмечено Doublench как решение
Решение
да, везде. ищите инфу по ключевым словам: placement new, размещающий new.
кратко: создание динамического объекта из двух шагов состоит 1. выделить под объект память. 2. инициализировать (сконструировать) его в этой памяти. в плюсах первый шаг можно кастомизировать, что вы и сделали. второй - нет. инициализация - это вот указание правильных значений всяким там vptr, вызов конструкторов внутренних подобъектов и т.п. в случае с placement new выделение памяти пропускается. объект конструируется в куске памяти, на начало которого указывает переданный параметр. ну и синтаксис у него такой: new (pointerToMemoryBlock) YourType(); Добавлено через 5 минут ну и еще для объектов, которые сконструированы таким макаром нужно явно вызывать деструктор: obj->~ObjectType(); если просто возвращать память в ваш менеджер, может возникнуть утечка. например если у Object есть мембер std::string - точно будет утечка, т.к. деструкторы этого и других мемберов не позовутся.
1
|
|
|
1 / 1 / 0
Регистрация: 05.07.2013
Сообщений: 176
|
|
| 07.06.2015, 21:52 [ТС] | |
|
Perfilov, то есть просто присвоив я ни черта не проинициализировал ? И надо только таким способом ?
0
|
|
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
| 07.06.2015, 22:49 | |
|
выходит что так. самодельное управление памятью - хитрая штука.
1
|
|
| 07.06.2015, 22:49 | |
|
Помогаю со студенческими работами здесь
13
Почему при виртуальном наследовании компилятор не знает о иерархии? Как при создании экземпляра класса инициализировать переменные вложенного класса Использование объекта одного класса при создании нового класса Вызов другого класса при создании свойства класса Почему при создании веб-страницы в FrontPage автоматически создается папка с изображениями, а при создании веб-страницы в DreamWeaver - нет? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|