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();
时会发生这种情况。
答案 0 :(得分:3)
对于Road r = Highway();
,Road r
表示您正在尝试定义类型为Road
的对象,这是一个抽象类,然后不允许定义。初始化列表部分(即= Highway()
)不会影响r
的类型,只是意味着r
是从Highway
类型的临时对象初始化的Road* r = new Highway;
// using r ...
delete r;
}。
您应该使用指针/智能指针或具有抽象类类型的引用,例如
Highway h;
Road& r = h;
// using r ...
或
relationship