Подобные вопросы задают, но они не дают ответа на мой вопрос. Я пытаюсь создать абстрактный класс (с одной чистой виртуальной функцией). Но компилятор выдает эту ошибку:
src/library.cpp:11:24: ошибка: недопустимое приведение к типу абстрактного класса ‘mgc::Shapes’ Shapes (длина, имя);
У меня есть конструктор абстрактного класса, так как он имеет переменные-члены и функции-члены. Я понятия не имею, почему эта ошибка появляется.
Вот мой заголовочный файл librar.h
class Shapes
{
public:
Shapes(double len = 0.0, std::string name = "");
virtual void printClass();
virtual double area() = 0;
protected:
double len_, width_;
std::string name_;
};
class Triangle : public Shapes
{
public:
Triangle(double lene =0, std::string namee= "" );
void printClass();
double area();
};
Вот мой файл реализации library.cpp
mgc::Shapes::Shapes(double length, std::string name)
: len_(length),
width_(length),
name_(name)
{}
mgc::Triangle::Triangle(double length, std::string name)
{
Shapes(length, name);
}
void mgc::Shapes::printClass()
{
std::cout<<"Base class is called"<<std::endl;
}
void mgc::Triangle::printClass()
{
std::cout<<"Triangle class is called"<<std::endl;
}
double mgc::Triangle::area()
{
return(width_*len_);
}