我试图通过传递对指针的引用而不是指向指针的指针来回答这里提到的问题,如下所示:
class Parent
{
};
class Child : public Parent
{
};
void RemoveObj(Parent*& pObj)
{
delete pObj;
pObj = NULL;
}
int main()
{
Parent* pPObj = new Parent;
Child* pCObj = new Child;
pPObj = new Parent();
pCObj = new Child();
RemoveObj(pPObj);
RemoveObj(pCObj); // This is line 32
return 1;
}
但这会在第 32 行产生以下编译器错误:
错误 C2664:“RemoveObj”:无法将参数 1 从“子 *”转换为“父 *&”
我同意不允许从 Child** 转换为 Parent**。但是为什么也不允许这种转换呢?