不允许使用抽象类数组

时间:2018-11-28 12:36:45

标签: c++

我有一个基于虚拟功能设计的运动系统。 Exercise类是由所有其他类继承的抽象类。

UML Diagram

class Exercise
{
public:
    Exercise();
    virtual void ExerciseName() = 0;
    virtual void Height();
    virtual void show() = 0;
    virtual void Speed();
    virtual void Weight();
    ~Exercise();
};

我想将三个运动(运动实例)填充到一个数组中。这是我尝试过的代码:

Exercise exercises[3];

这具有以下错误: 不允许抽象类“ Exercise”的错误(活动)E0604数组:OOP_2017_Q2 H:\ OOP_2017_Q2 \ OOP_2017_Q2 \ OOP_2017_Q2.cpp 15

如何将三个练习填充到一个数组中,其中基类使用纯虚函数?

1 个答案:

答案 0 :(得分:2)

使用(智能)指针的向量,例如:

std::vector<std::unique_ptr<Exercise>> exercises(3);

然后您可以使用它们:

exercises[0].reset(new MyExercice);