I'm trying to use QSharedPointer
in my polymorphic stucture, but I couldn't find right syntax to convert pointer of base class to pointer of derived class.
struct Switch : State {
int a;
};
QSharedPointer <State> myState=QSharedPointer <State>(new Switch);
QSharedPointer <Switch> mySwitchTest= ??? myState;
What should I put in the place of ???
Use qSharedPointerCast()
:
QSharedPointer <Switch> mySwitchTest= qSharedPointerCast<Switch>(myState);
Or call staticCast()
on the smart pointer:
QSharedPointer <Switch> mySwitchTest= myState.staticCast<Switch>();
Both versions are basically equivalent to doing static_cast
on raw pointers.