我是多态的新手,这是一个与此类似的问题,但解决方案对我没有帮助。确切的错误是:
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;
^
但仍然有同样的错误?
谢谢