使用BaseObject :: Free可释放PolygonObject(Cinema4D)

时间:2019-02-18 15:27:56

标签: c++ cinema-4d

Cinema4D的C ++ API提供了BaseObject类型和派生的(但没有虚拟功能)PolygonObject类型。两种类型都定义了自己的AllocFree函数-有

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_castPolygonObject *转换为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 *>吗?

0 个答案:

没有答案