Ошибка "cannot Instantiate Abstract Class"

Тема в разделе "MS Visual C++", создана пользователем kostyan777, 11 июн 2010.

Статус темы:
Закрыта.
  1. kostyan777

    kostyan777 Гость

    Помогите пожалуйста отладить код, не могу разобраться, почему когда я создаю объект класса Sqr, который является наследником класса Poly, компиллятор ругается "cannot instantiate abstract class":

    void Shapes::Add(const Poly &P)
    {
    if(P.name=="Квадрат")
    tmp->poly=new Sqr(P);
    }

    Вот описание классов:

    struct Pair
    {
    Point p;
    Pair * next;
    };

    class Poly
    {
    protected:
    Pair *ptr; // список точек
    string name;
    public:
    Poly(){ptr=NULL; name="";};
    Poly(const Poly&);
    void Show();
    double Perimetr();
    virtual double Square()=0;
    friend struct Shapes;
    };

    class Sqr: public Poly
    {
    public:
    Sqr(){ptr=NULL; name="Квадрат";};
    double Square() const;
    };

    Заранее благодарен.
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    double Square() const; а в оригинале не const
     
  3. Mungust

    Mungust Гость

    Походу это из-за полностью виртуального Square. Ты наследуешь Poly и не задаешьникакой реализации функции => она у тебя и в Sqr чисто виртуальная. А любой класс в котором есть хоть один чисто виртуальный метод С++ считает абстрактным. Короче задай реализацию и заработает
     
Загрузка...
Похожие Темы - Ошибка cannot Instantiate
  1. Xalet
    Ответов:
    25
    Просмотров:
    9.998
  2. wowa
    Ответов:
    3
    Просмотров:
    2.825
  3. admin
    Ответов:
    1
    Просмотров:
    4.722
  4. Lamerman
    Ответов:
    0
    Просмотров:
    26
  5. Enima
    Ответов:
    0
    Просмотров:
    52
Статус темы:
Закрыта.

Поделиться этой страницей