Облик Заголовочный файлC++ наследование/переопределение ошибка
ОШИБКА: Конструктор «Прямоугольник» должен явно инициализировать базовый класс «Shape», который не имеет конструктор по умолчанию
#ifndef Rectangle_hpp
#define Rectangle_hpp
#include "shape.hpp"
#include <stdio.h>
class Rectangle:public Shape{
double m_length;
double m_width;
public:
Rectangle(double length,double width):Shape("Rectangle"){}
double getPerimeter();
double getArea();
};
#endif /* Rectangle_hpp */
Облик каст файла
ОШИБКА: Переопределение 'Прямоугольник'
#include "Rectangle.hpp"
#include "shape.hpp"
#include "Rectangle.hpp"
Rectangle::Rectangle(double length,double width):Shape("Rectangle"){
m_length = length;
m_width = width;
}
double Shape::getPerimeter(){
return 2;
}
double Shape::getArea(){
return 2;
}
базового класс заголовок файл
#ifndef shape_hpp
#define shape_hpp
#include <stdio.h>
class Shape{
const char* m_name;
public:
Shape(const char* name);
virtual double getPerimeter()=0;
virtual double getArea()=0;
char getType();
};
#endif /* shape_hpp */
Базовых файл касты Класса
#include "shape.hpp"
Shape::Shape(const char* name){
m_name = name;
}
char Shape::getType(){
return *m_name ;
}
Я сделал еще один класс «Круг» с такой же планировкой, как прямоугольник и не получил какие-либо ошибки, эти ошибки появляются только в прямоугольнике класс .. Я застрял и понятия не имею, почему.
У вас есть два определения 'Rectangle' конструктора –
Вам также не нужна shape.hpp в вашем прямоугольнике.cpp, поскольку вы уже включили его в rectangle.hpp. И у вас есть rectangle.hpp дважды. –