we use EASTL and I can't use std::static_pointer_cast.
I receive a pointer to base class in my function and don't know, how to correctly cast it:
switch (command.code)
{
..
case CommandCode::firstCase:
firstCaseFunction(std::shared_ptr<firstCaseType>(static_cast<firstCaseType*>(command.context.get())));
break;
case CommandCode::secondCase:
secondCaseFunction(std::shared_ptr<secondCaseType>(static_cast<secondCaseType*>(command.context.get())));
break;
..
default:
break;
}
The code above compiles, but throws some exception in the end of firstCaseFunction
/secondCaseFunction
(I don't see the exception, probably because we don't even support exceptions in our code).
The code doesn't look correct, but I can't find correct solution for this problem and I tried many versions, but none of them worked.
I think there is a problem with lifetime of the casted smart pointer objects.
How to make it work?