我有一个功能:
bool IntersectBoxBox(IShape3D* a, IShape3D* b)
{
Box* boxA = (Box*)a;
Box* boxB = (Box)b;
return(boxA->Intersects(boxB));
}
当2 IShape3D 被确定为box
和box
类型(有IShape3D->GetType()
方法)时会调用它。< / p>
无论如何,问题是 Intersects 需要Box& box
,所以我无法传递指针。是否有一种廉价的方式来转换参数?
答案 0 :(得分:10)
只需取消引用您的指针(*boxB
)。
答案 1 :(得分:3)
一般情况下不能这样 - 只有当你有非nullptr
时才有可能。在这里涉及动态转换时,这可能确实非常相关,因为它似乎(不使用C风格的转换进行动态分派)。消除nullptr
案例后,您可能确实只是取消引用指针*boxB
。