Search code examples
c++qtpolymorphismtype-conversioncasting

Polymorphic QSharedPointer


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 ???


Solution

  • 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.