История изменений
Исправление rumgot, (текущая версия) :
Тебе нужно почитать какую-нибудь книгу по основам C++. Потому что у тебя сейчас каша в голове. В C++ приведение из указателя на объект родительского класса в указатель на объект производного класса нужно использовать ТОЛЬКО ТОГДА, КОГДА В ПАМЯТИ ПО ЭТОМУ УКАЗАТЕЛЮ НАХОДИТСЯ ОБЪЕКТ ЭТОГО ПРОИЗВОДНОГО КЛАССА ЛИБО ЕГО ПОТОМКА! ИНАЧЕ (если по этому указателю в памяти расположен объект родительского класса или объект вообще не из данной иерархии наследования (если используется reinterpret_cast)) ЭТО НЕОПРЕДЕЛЕННОЕ ПОВЕДЕНИЕ И ТАК ДЕЛАТЬ НЕЛЬЗЯ (и кстати dynamic_cast при этом вернет nullptr в случае указателя и сгенерирует исключение в случае ссылки).
Исправление rumgot, :
Тебе нужно почитать какую-нибудь книгу по основам C++. Потому что у тебя сейчас каша в голове. В C++ приведение из указателя на объект ролительского класса в указатель на объект производного класса нужно использовать ТОЛЬКО ТОГДА, КОГДА В ПАМЯТИ ПО ЭТОМУ УКАЗАТЕЛЮ НАХОДИТСЯ ОБЪЕКТ ЭТОГО ПРОИЗВОДНОГО КЛАССА ЛИБО ЕГО ПОТОМКА! ИНАЧЕ (если по этому указателю в памяти расположен объект родительского класса или объект вообще не из данной иерархии наследования (если используется reinterpret_cast)) ЭТО НЕОПРЕДЕЛЕННОЕ ПОВЕДЕНИЕ И ТАК ДЕЛАТЬ НЕЛЬЗЯ (и кстати dynamic_cast при этом вернет nullptr в случае указателя и сгенерирует исключение в случае ссылки).
Исходная версия rumgot, :
Тебе нужно почитать какую-нибудь книгу по основам C++. Потому что у тебя сейчас каша в голове. В C++ приведение из указателя на объект ролительского класса в указатель на объект производного класса нужно использовать ТОЛЬКО ТОГДА, КОГДА В ПАМЯТИ ПО ЭТОМУ УКАЗАТЕЛЮ НАХОДИТСЯ ОБЪЕКТ ЭТОГО ПРОИЗВОДНОГО КЛАССА ЛИБО ЕГО ПОТОМКА! ИНАЧЕ (если по этому указателю в памяти расположен объект родительского класса или объект вообще не из данной иерархии наследования (если используется reinterpret_cast)) ЭТО НЕОПРЕДЕЛЕННОЕ ПОВЕДЕНИЕ И ТАК ДЕЛАТЬ НЕЛЬЗЯ.