có ai biết tại sao điều này cho lỗi trình biên dịch không? Tôi cố gắng VS 2005 và CodeWarrior:Tham chiếu đến con trỏ và đa hình C++
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;
}
Visual studio nói:
refptr.cpp (33): lỗi C2664: 'RemoveObj': không thể chuyển đổi thông số 1 từ 'Child *' để 'Chánh * &'
Cảm ơn
Lý do chính đáng. +1 :) –