多态QSharedPointer

时间:2010-08-17 07:46:36

标签: c++ qt polymorphism type-conversion casting

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

struct Switch : State {
 int a;
};

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

QSharedPointer <Switch> mySwitchTest= ??? myState;

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

2 个答案:

答案 0 :(得分:24)

使用qSharedPointerCast()

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的等价物。选择你的毒药。