gpt4 book ai didi

c++ - 尝试定义从抽象类派生的类类型的对象时出错

转载 作者:行者123 更新时间:2023-11-30 02:27:36 24 4
gpt4 key购买 nike

class Road {
private:
std::vector<Vehicle*> container;
public:
std::vector<Vehicle*> getContainer(){
return container;
}
virtual void operator+(Vehicle *vehicle)=0;
};


class Highway: public Road {
public:
virtual void operator+(Vehicle *vehicle) {
getContainer().push_back(vehicle);
}
};

当我的所有虚函数都被覆盖时,为什么我会收到无法分配抽象类型对象的错误?当我尝试在主类中调用 Road r = Highway(); 时会发生这种情况。

最佳答案

对于 Road r = Highway();Road r 意味着您正在尝试定义一个 Road 类型的对象,它是抽象类则不允许定义。初始化列表部分(即 = Highway())不影响 r 的类型,它只是意味着 rslicing-copyHighway 类型的临时对象初始化。

您应该使用具有抽象类类型的指针/智能指针或引用,例如

Road* r = new Highway;
// using r ...
delete r;

Highway h;
Road& r = h;
// using r ...

关于c++ - 尝试定义从抽象类派生的类类型的对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41522948/

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