首页 > 解决方案 > c ++:使用std :: vector时,出现错误:分配抽象类类型的对象

问题描述

我看过其他类似的线程,这个问题在我使用的意义上是不同的std::vector。我有以下代码在C++.

#include<iostream>
#include<vector>
using namespace std;

class Vehicle {
public:
    virtual void brake()=0;
};

class Car : public Vehicle {
public:
    virtual void brake() override;
};

void Car::brake() {
    cout<<"Brake applied"<<endl;
}

当我brake()以这种方式调用它时:

int main() {
    Car c;
    c.brake(); // Brake applied
    return 0;
} 

但是,当我brake()使用以下方式调用时,出现错误error: allocating an object of abstract class type 'Vehicle'

int main() {
    vector<Vehicle> vehicleList;
    vehicleList.push_back(c);
    vehicleList.at(0).brake(); 
    return 0;
}

对不出错有任何帮助吗?

标签: c++inheritanceabstract-classvirtualallocation

解决方案


推荐阅读