我有2个班级:
Forme.h
class Forme
{
private:
string _nom;
protected:
Forme(string nom){nom = _nom;}
~Forme();
virtual string ToString()const = 0;
};
Rectangle.h
class Rectangle : public Forme
{
private :
int _x;
int _y;
unsigned int _largeur;
unsigned int _hauteur;
public :
Rectangle() : _x(0) , _y(0) , _largeur(0) , _hauteur(0) , Forme("") {};
Rectangle(int x, int y, int largeur, int hauteur, string nom): _x(x) , _y(y) , _largeur(largeur) , _hauteur(hauteur) , Forme(nom) {}
Rectangle(const Rectangle& rectangle) : Forme(""){/*nothing wroten yet */};
virtual ~Rectangle() {}
virtual string toString() const {return "test";}
};
main.cpp:
Rectangle* r = new Rectangle(0,0,5,5,"test");
但是当我编译这段代码时,我得到了这个错误:
main.cpp |错误:无法分配抽象类型'Rectangle'的对象
有人能解释我为什么会收到此错误吗?我不知道为什么我得到这个错误,因为在Rectangle.h中定义了toString(),我没有在Rectangle.cpp和Forme.cpp中写任何东西。
谢谢。
(抱歉我的英语水平不好,我是法国人)
答案 0 :(得分:2)
这是一个错字:
基类
class Forme
{
virtual string ToString()const = 0;
};
派生类
class Rectangle : public Forme {
virtual string toString() const {return "test";}
}
此外:
~Forme();
这没有定义。用{}
修复它,并可能将其标记为虚拟。