多态QSharedPointer

met*_*dos 16 c++ polymorphism qt casting type-conversion

我试图QSharedPointer在我的多态结构中使用,但我找不到正确的语法将基类的指针转换为派生类的指针.

struct Switch : State {
 int a;
};

QSharedPointer <State> myState=QSharedPointer <State>(new Switch);  

QSharedPointer <Switch> mySwitchTest= ??? myState;
Run Code Online (Sandbox Code Playgroud)

我应该把它放在什么地方?

In *_*ico 25

用途qSharedPointerCast():

QSharedPointer <Switch> mySwitchTest= qSharedPointerCast<Switch>(myState);
Run Code Online (Sandbox Code Playgroud)

或者调用staticCast()智能指针:

QSharedPointer <Switch> mySwitchTest= myState.staticCast<Switch>();
Run Code Online (Sandbox Code Playgroud)

两个版本基本上等同于static_cast对原始指针进行操作.


Fra*_*eld 12

对于动态强制转换,请使用qSharedPointerDynamicCast:

class Derived : public Base { ... };
QSharedPointer<Base> base...

QSharedPointer<Derived> derived = qSharedPointerDynamicCast<Derived>( base );
Run Code Online (Sandbox Code Playgroud)

static_cast(如计算机显示),qobject_cast和const_cast也有等价物.选择你的毒药.