私はポリモーフィズムに不慣れです。これはこれと同様の質問ですが、解決策は私を助けませんでした。正確なエラーは次のとおりです。
Circle.cpp(34):エラーC2259:'Circle':次のメンバーが原因で抽象クラスをインスタンス化できません:' void Shape ::particle(const Ray&、const int&)':抽象です
私はこれを読み込もうとしましたが、clone()メンバー関数は、Circleのコピーコンストラクターを呼び出して、この状態を新しく作成されたCircleオブジェクトにコピーし、「パーティクル」を初期化しようとします(これはできません)。 )。私が正しい場合:これを修正するにはどうすればよいですか?私が間違っている場合...それは何をしているのか(私は何を間違っているのか)、そしてどのようにそれを修正するのですか?
class Shape {
public:
virtual void particle(const Ray& ray, const int& count) = 0;
...
virtual Shape* clone() const = 0;
private:
vector<Ray> incoming_ray;
vector<int> counts;
};
class Circle : public Shape {
public:
Circle* clone() const; //covariant return type
virtual void
particle(const Ray& ray, const int& count);
...
};
その後
Circle* Circle::clone() const { return new Circle(*this); }
void
Circle::particle(const Ray& rays, const int& count){
incoming_ray.push_back(inc_ray);
counts.push_back(counts);};
私は試した
virtual void particle(const Ray& ray, const int& count) const = 0;
^
しかし、それでも同じエラーが発生しましたか?
ありがとう