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.
For a dynamic cast, use qSharedPointerDynamicCast:
class Derived : public Base { ... };
QSharedPointer<Base> base...
QSharedPointer<Derived> derived = qSharedPointerDynamicCast<Derived>( base );
There are also equivalents for static_cast (as in silico showed), qobject_cast and const_cast. Pick your poison.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With