下面这个问题对我来说有点难以表述,但请耐心等待,如果我能帮助解决任何问题,请告诉我。
我正在为 3D 形状编写通用模拟。我正在使用一个基类:
class Shape{
public:
...
virtual double return_volume() =0;
private:
vector<double> coordinates;
...
};
现在,因为我不知道用户会选择什么形状,所以我从中派生了几个类。(例如:球体、立方体、四面体等)
到目前为止,一切都很好。主要问题在于我有一个 Controller 类,它启动并运行模拟。作为私有成员,它应该有多个形状的向量(都是同一类型。例如:15 个球体,或 10 个立方体等)
class SimulationControl{
public:
void runsimulation();
private:
vector<Shape> all_shapes;
...
};
我想用一个非默认构造函数简单地初始化这个私有成员。现在,在我知道自己做了什么之前,Eclipse 已经告诉我“'Shape' 类型必须实现继承的纯虚方法 'Shape::return_volume'”
我当然理解错误消息和我的错误,但我仍然不明白如何解决它。
我希望能够做的是将向量的类型保留为未定义,然后当我知道用户选择了哪种模拟类型时,只需在运行时使用正确的派生类通过构造函数创建它。
有没有可能做到这一点?谢谢