«Форма класса» не имеет члена с именем «информация», но добавление его также не работает

Я пытаюсь получить код для компиляции (Этот код) но когда я закомментирую строку 25:
virtual void info()=0;
он не компилируется:

shape.cpp: In function ‘int main()’:
shape.cpp:345:11: error: ‘class shape’ has no member named ‘info’
svec[0]->info();

но сохранение строки 25 дает очень длинную ошибку о чисто виртуальной функции …

shape.cpp:77:15: error: cannot declare parameter ‘squ’ to be of abstract type ‘square’
cube(square squ):
^
shape.cpp:30:7: note:   because the following virtual functions are pure within ‘square’:
class square : public shape {
^
shape.cpp:25:16: note:  virtual void shape::info()
virtual void info()=0;
^
shape.cpp:167:20: error: cannot declare parameter ‘rec’ to be of abstract type ‘rectangle’
cuboid(rectangle rec, double d):
^
shape.cpp:110:7: note:   because the following virtual functions are pure within ‘rectangle’:
class rectangle : public shape {
^
shape.cpp:25:16: note:  virtual void shape::info()
virtual void info()=0;

и так далее…

Кто-нибудь может дать мне представление о том, что я делаю неправильно? Благодарю.

0

Решение

Функция объявлена const в производных классах, но не в базовом классе. Это означает, что производные классы не переопределяют функцию; они просто объявляют другую функцию с тем же именем.

Либо добавить const в базовом классе или удалите его в производных классах.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]