我正在尝试在我的多态结构中使用QSharedPointer
,但我找不到正确的语法将基类的指针转换为派生类的指针。
struct Switch : State {
int a;
};
QSharedPointer <State> myState=QSharedPointer <State>(new Switch);
QSharedPointer <Switch> mySwitchTest= ??? myState;
我应该把它放在什么地方?
答案 0 :(得分:24)
QSharedPointer <Switch> mySwitchTest= qSharedPointerCast<Switch>(myState);
或者在智能指针上调用staticCast()
:
QSharedPointer <Switch> mySwitchTest= myState.staticCast<Switch>();
两个版本基本上等同于对原始指针执行static_cast
。
答案 1 :(得分:12)
对于动态演员,请使用qSharedPointerDynamicCast:
class Derived : public Base { ... };
QSharedPointer<Base> base...
QSharedPointer<Derived> derived = qSharedPointerDynamicCast<Derived>( base );
还有static_cast(如计算机显示),qobject_cast和const_cast的等价物。选择你的毒药。