#1103·oatpp

在 'ObjectWrapper::checkType' 中出现类型混淆

作者: 2rr0r4o3创建于 2026年8月24日更新于 2026年8月24日

总结

checkTypeObjectWrapper::operator= 在覆盖包装器指针之前执行的保护函数。它检查目标类型是否扩展了源类型,这是一个倒置的操作。它接受了不安全的方向,拒绝了安全的方向:一个 Object<Base> 值被接受到一个 Object<Derived> 字段中,而 Object<Derived>Object<Base> 则会抛出异常。赋值操作复制了 m_ptr,而不改变 m_valueType,因此字段最终被标记为 Derived,而指向一个 Base 分配,JSON 序列化器然后会遍历 Derived 的属性表以进行处理。