この次の質問は、私には定式化するのが少し難しいですが、ご容赦ください。何か解決できることがあればお知らせください。
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' を実装しなければならない」と教えてくれました。
もちろん、エラーメッセージと私の間違いは理解していますが、どうすれば解決できるのかまだわかりません。
私ができるようにしたいのは、ベクターのタイプを未定義のままにし、ユーザーが選択したシミュレーションのタイプがわかっているときに、実行時に正しい派生クラスを使用してコンストラクターを介して単純に作成することです。
どういうわけかそれを行うことは可能ですか?ありがとう