Cinema4D的C ++ API提供了BaseObject
类型和派生的(但没有虚拟功能)PolygonObject
类型。两种类型都定义了自己的Alloc
和Free
函数-有
static void BaseObject::Free(BaseObject *&);
有
static void PolygonObject::Free(PolygonObject *&);
如果我尝试使用PolygonObject
释放BaseObject::Free
,则会出现编译错误无法将参数1从'PolygonObject *'转换为'BaseObject *&':< / p>
PolygonObject *poly_obj = PolygonObject::Alloc(3, 1);
BaseObject::Free(poly_obj);
但是,我可以使用static_cast
将PolygonObject *
转换为BaseObject *
并突然编译代码:
PolygonObject *poly_obj = PolygonObject::Alloc(3, 1);
BaseObject *poly_as_base_obj = static_cast<BaseObject *>(poly_obj);
BaseObject::Free(poly_as_base_obj);
在Cinema4D文档中,我找不到有关此代码是否有效的信息。可以通过PolygonObject
使用BaseObject::Free
释放static_cast<BaseObject *>
吗?