如何修复空虚拟方法的"warning: no return statement in function returning non-void [-Wreturn-type]"

How to fix "warning: no return statement in function returning non-void [-Wreturn-type]" for empty virtual method

本文关键字:function in statement returning non-void -Wreturn-type return no 虚拟 空虚 何修复      更新时间:2023-10-16

我有一个带有许多空的虚拟方法的基类,这些方法已在各种子类中实现,例如:

//base class (has no attribute A or B)
virtual double getAttributeA(){} //implemented in subclass A
virtual int getAttributeB(){} // implemented in subclass B

我需要空功能,因为我需要在基类指针上调用子类功能。

这个编译良好,但是我得到了警告,因为我显然定义了返回类型(子类需要的类型),但不要返回任何内容。

我该如何解决此警告?

谢谢!

我需要空功能,因为我需要在基类指针上调用子类功能。

如果您将它们声明为纯虚拟的,例如:

virtual double getAttributeA() = 0;
virtual int getAttributeB() = 0;

这意味着基类本身根本不需要实现,但是派生的类必须实现它们。

我得到警告,因为我显然定义了返回类型(子类需要的类型),但不要返回任何内容。

如果您声明了非流动返回类型,则必须返回某物:

virtual double getAttributeA() { return 0.0; }
virtual int getAttributeB() { return 0; }