Рассмотрим две геометрии Triangle
и Line
которые наследуют от базовой структуры Geometry
. Производные структуры наследуют виртуальную функцию get_area()
, так что Triangle
обычно вычисляет область, но Line
должен сообщить об ошибке, указывающей, что get_area()
не имеет отношения к Line
. Когда отображается ошибка, я хотел бы знать, какая структура называется get_area()
и где (номер строки) и, наконец, завершает работу программы. Не имеет значения, отображается ли ошибка при компиляции или времени выполнения. Как я могу это сделать?Ошибка при виртуальной функции
struct Geometry
{
virtual double get_area() = 0;
};
struct Triangle: Geometry
{
double get_area() override {/* some code. */}
};
struct Line: Geometry
{
double get_area() override {/* give error. */}
};
Возможно, вам нужно переосмыслить свой дизайн? Или ваша реализация, по крайней мере? Если строки не имеют области, то класс 'Line' не должен * иметь * такую функцию? –
Похоже, вам нужен класс 'line', который является членом класса« polygon », а затем вы можете получить« polygon », чтобы сделать ваши фигуры. – NathanOliver