我试图在我的多态结构中使用QSharedPointer,但我找不到正确的语法来将基类的指针转换为派生类的指针。
struct Switch : State {
int a;
};
QSharedPointer <State> myState=QSharedPointer <State>(new Switch);
QSharedPointer <Switch> mySwitchTest= ??? myState;我应该放什么来代替?
发布于 2010-08-17 15:51:30
使用qSharedPointerCast()
QSharedPointer <Switch> mySwitchTest= qSharedPointerCast<Switch>(myState);或者在智能指针上调用staticCast():
QSharedPointer <Switch> mySwitchTest= myState.staticCast<Switch>();这两个版本基本上等同于在原始指针上执行static_cast。
发布于 2010-08-17 16:35:40
对于动态转换,请使用qSharedPointerDynamicCast:
class Derived : public Base { ... };
QSharedPointer<Base> base...
QSharedPointer<Derived> derived = qSharedPointerDynamicCast<Derived>( base );static_cast (如图所示)、qobject_cast和const_cast也有等价物。选择你的毒药。
https://stackoverflow.com/questions/3500336
复制相似问题