引用指针和C++多态

11 c++ parameters polymorphism pointers reference

有谁知道为什么这会给编译器错误?我试过VS 2005和Codewarrior:

class Parent {
   protected:
      int m_Var;
   public:
      Parent() : m_Var(0) {}
      virtual ~Parent() {}
      void PubFunc();
};

class Child : public Parent {
   protected:
      bool m_Bool;
   public:
      Child() : m_Bool(false) {}
      virtual ~Child() {}
      void ChildFunc();
};

void RemoveObj(Parent *& ppObj)
{
   delete ppObj;
   ppObj = 0;
}

int main()
{
   Parent* pPObj = 0;
   Child*  pCObj = 0;
   pPObj = new Parent();
   pCObj = new Child();

   RemoveObj(pPObj);
   RemoveObj(pCObj);
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio说:

refptr.cpp(33):错误C2664:'RemoveObj':无法将参数1从'Child*'转换为'Parent*&'

谢谢

Mic*_*urr 16

ppObjRemoveObj 的参数是对Parent*的引用.如果该RemoveObj()方法用指向新Parent对象的指针替换指针怎么办?当方法返回时,pCObj Child*不会再指向Child对象了.