gpt4 book ai didi

c++ - 对指针和 C++ 多态性的引用

转载 作者:可可西里 更新时间:2023-11-01 15:05:14 25 4
gpt4 key购买 nike

有谁知道为什么会出现编译错误?我试过 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;
}

Visual Studio 说:

refptr.cpp(33) : error C2664: 'RemoveObj' : cannot convert parameter 1 from 'Child *' to 'Parent *&'

谢谢

最佳答案

RemoveObj 的 ppObj 参数是对 Parent* 的引用。如果 RemoveObj() 方法将指针替换为指向新的 Parent 对象的指针会怎样?当该方法返回您的 pCObj Child* 时,将不再指向 Child 对象。

关于c++ - 对指针和 C++ 多态性的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com