我試圖回答這個問題通過將參考指針,而不是指向提及here的指針這樣的:從派生*轉換爲基地*
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從 '少年*' 來 '父* &'
我同意從孩子說轉換**於母公司**是不允許的。但爲什麼這種轉換也是不允許的?
爲什麼返回1;在main()的結尾?它不應該是返回0; ? – DeadHead 2009-04-10 09:06:36
我只是複製粘貼代碼鏈接的問題..但這是不相關的問題 – Naveen 2009-04-10 09:08:32
哦,我知道這是不是真的有關的問題。只是好奇心加上思考,我的知識可能存在一些差距。 – DeadHead 2009-04-10 09:10:09