Polymorphic QSharedPointer
11,565
Solution 1
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.
Solution 2
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.
Author by
metdos
"The spiritual quest for elegance can turn the hacker into an artist."
Updated on June 04, 2022Comments
-
metdos almost 2 years
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 ???