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