"类形状"没有名为"info"的成员,但添加一个也不起作用

‘class shape’ has no member named ‘info’ but adding one doesn't work either

本文关键字:添加 不起作用 一个 成员 info      更新时间:2023-10-16

我正在尝试获取一些代码来编译(此代码(,但是当我注释掉第 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;

等等...

谁能告诉我我做错了什么?谢谢。

该函数在派生类中声明const,但不在基类中声明。这意味着派生类不会重写函数;它们只是声明一个具有相同名称的不同函数。

在基类中添加const,或在派生类中删除它。