是否始终允许从Base*
to转换?是否始终允许Derived*
从const Base*
to转换?const Derived*
我正在使用 Qt QSharedPointers。我有一个要Base
对象的 QSharedPointer,我想将其转换为Derived
对象的 QSharedPointer。我事先检查 pointee 是 type Derived
。
有没有可能100%的成功率
static_cast<QSP<Derived>>
dynamic_cast<QSP<Derived>>
- 直接演员
QSP<Derived>(my_base_pointer)
?
例如,对于直接转换:
QSP<Derived> inpf = QSP<Derived>(my_base_pointer) ;
我有错误
Error 1 error C2440: 'initializing' : cannot convert from 'Base *' to 'Derived *'
与my_base_pointer
类型const QSP<Base>
。
是因为 constness 吗?我应该在此之上使用 const_cast 吗?我猜 constness 不是根本原因,因为如果我
const QSP<Derived> inpf = static_cast<const QSP<Derived>>(my_base_pointer);
发生同样的错误。