Я создал функцию, которая возвращает базовый указатель на производный объект, который создается в функции.Кажется, это не работает!Как будто производные данные потеряны, а указатель указывает на базовый объект ...
Существует класс Request, который является базовым классом, и класс loginRequest, который выводит Request.Чтобы проверить тип объекта, я напечатал имя объекта (typeid (* r) .name ()).Внутри функции func () вывод на печать оказался «loginRequest», что хорошо, потому что это остроконечный объект.(посмотрите на код) НО после возврата этого указателя, когда я снова печатаю его тип, получается «Запрос».Ребята, можете ли вы помочь мне?почему возвращенный указатель теряет производные данные?
Request * r = new Request();
r = func(); // r is now supposed to point the LoginRequest object.
std::cout<< typeid(*r).name() <<std::endl; //print the type of OBJECT
//func
Request * func()
{
Request * r;
LoginRequest l = LoginRequest();
r = &l;
std::cout<< typeid(*r).name() <<std::endl; //print the type of OBJECT
return r;
}