0 / 0 / 1
Регистрация: 01.10.2014
Сообщений: 87
|
|||||||||||||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||||||||||||
Pure virtual function call (не видит переопределенный метод)19.07.2016, 18:25. Показов 1259. Ответов 12
Метки нет Все метки)
(
Здравствуйте.
Имеется базовый класс Cars и унаследованные от него классы Jeep, Hatchback, Sedan
0
|
|
19.07.2016, 18:25 | |
Ответы с готовыми решениями:
12
R6025 pure virtual function call
Что означает ошибка pure virtual function call в NFS? |
0 / 0 / 1
Регистрация: 01.10.2014
Сообщений: 87
|
|
19.07.2016, 19:02 [ТС] | 3 |
Croessmah, на область памяти, которой процесс больше не владеет. Согласен, ошибка грубая. Но главная проблема так и осталась.
0
|
![]() 1673 / 1045 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
19.07.2016, 20:49 | 4 |
mishula, а если убрать скобки вокруг *ptr при выводе в operator <<, проблема решится?
0
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
19.07.2016, 20:56 | 5 |
телепаты в отпуске.
привести минимальный компилирующийся пример, который иллюстрирует вашу проблему. код можно выложить например здесь: http://rextester.com/DMXZPL35906
0
|
0 / 0 / 1
Регистрация: 01.10.2014
Сообщений: 87
|
|
19.07.2016, 22:57 [ТС] | 6 |
hoggy, пожалуйста http://rextester.com/AKYR81265
Nick Alte, это ничего не меняет
0
|
![]() 1673 / 1045 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
19.07.2016, 23:17 | 8 |
mishula, посмотрел код внимательнее. Проблема в конструкторе TQueueItem(Cars&);, который получает адрес временного объекта Sedan, который уничтожается сразу после использования (а адрес продолжает использоваться в созданном TQueueItem).
0
|
Неэпический
|
|
19.07.2016, 23:29 | 9 |
Nick Alte, именно.
Причем если бы компилятор так расхлябано к этому не относился, а соответствовал требованиям, то он бы такого не допустил. Я имею ввиду потерю константности и привязку временного объекта к неконстантной ссылке. Конечно, поломать можно всё, но этот компилятор просто этому способствует.
0
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||
19.07.2016, 23:41 | 10 | ||||||||||||||||||||
временный объект:
временный объект умирает, в итоге имеем указатель на труп. лекарство: http://rextester.com/MXDHR6587
0
|
0 / 0 / 1
Регистрация: 01.10.2014
Сообщений: 87
|
||||||
19.07.2016, 23:44 [ТС] | 11 | |||||
hoggy, спасибо, сейчас посмотрю. Сам я пока додумался только для использования в main
0
|
![]() 1673 / 1045 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
20.07.2016, 00:01 | 12 |
Да, здесь явно отклонение от стандарта. Впрочем, удивляться не приходится, это же Visual C++, печально известный огрехами такого рода.
0
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
20.07.2016, 00:06 | 13 |
нет, это программисты, печально известные игнорированием
предупреждений от компилятора. http://rextester.com/RSHOKM68850
0
|
20.07.2016, 00:06 | |
Помогаю со студенческими работами здесь
13
Protected abstract virtual base pure virtual private destructor
Pure virtual method called - deleteLater Call to undefined function '_beginthreadex' in function main() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |