Абстрактные классы в С++
2471
3
Помогите, пожалуйста!
Создаю абстрактный класс
//---Abstractn class----
class Figura {
public:
virtual void set()=0;
};
На его основе создаю производный класс
//---Class figura-kontur---
class FiguraKont: public Figura {
int x1,x2,x3,y1,y2,y3;
int x12,x22,x32,y12,y22,y32;
public:
void set(int xt1,int xt2, int xt3,int yt1,int yt2,int yt3)
{x1=xt1; x2=xt2; x3=xt3; y1=yt1; y2=yt2; y3=yt3;
}};
Затем в основной программе указываю
void main()
{
ZakrFigura A;
....}
Выдается ошибка: "Cannot create instance of abstract class "FiguraKont""
В чем моя ошибка???
Создаю абстрактный класс
//---Abstractn class----
class Figura {
public:
virtual void set()=0;
};
На его основе создаю производный класс
//---Class figura-kontur---
class FiguraKont: public Figura {
int x1,x2,x3,y1,y2,y3;
int x12,x22,x32,y12,y22,y32;
public:
void set(int xt1,int xt2, int xt3,int yt1,int yt2,int yt3)
{x1=xt1; x2=xt2; x3=xt3; y1=yt1; y2=yt2; y3=yt3;
}};
Затем в основной программе указываю
void main()
{
ZakrFigura A;
....}
Выдается ошибка: "Cannot create instance of abstract class "FiguraKont""
В чем моя ошибка???
lena_sunny
activist
если надо создаь объект типа Figura , то пишем в main-е:
Figura *A;
Figura *A;
Хорошо что разобрались!
Объясню в чём проблема. Компилятор считает ваш производный класс FiguraKont абстракнным, т.к. данный класс не реализует функцию virtual void set()=0; базового класа. Чтобы класс FiguraKont перестал быть абстрактным, и можно было создавать объекты данного класса, вам необходимо реализовать в нем функцию void set()
Обязательно обратите внимание - данная функция имеет пустой список аргументов!
Объясню в чём проблема. Компилятор считает ваш производный класс FiguraKont абстракнным, т.к. данный класс не реализует функцию virtual void set()=0; базового класа. Чтобы класс FiguraKont перестал быть абстрактным, и можно было создавать объекты данного класса, вам необходимо реализовать в нем функцию void set()
Обязательно обратите внимание - данная функция имеет пустой список аргументов!