【发布时间】:2016-02-13 23:14:53
【问题描述】:
我有一个基类Base 有很多纯虚拟方法,我想定义一些class Foo: public Base 形式的类,类似地class Bar、class Baz 等 - 所有这些都应该是非虚拟的,所有这些都在 .cpp 文件中实现它们的虚拟方法,而不是在类定义中内联。目前,在这些类的每一个定义中,我都声明了 void method1() override、void method2() override 等等,令人作呕——而且我必须复制粘贴这些内容的次数与继承 class Base 的次数一样多。
有没有另一种更简洁的说法:“这个类重写了所有必要的非抽象方法”?
注意事项:
- 我知道我可以做一些基于宏的组合,我不是那个意思。
- 基于 C++ 反射库的解决方案并不可取,但可能可以接受。
- 如果有帮助,您可以忽略多重继承。
【问题讨论】:
-
你问奇怪的问题,伙计。你能用一个你真正想要实现的(伪代码)示例来填充它吗?
-
你的意思是“所有必要的方法都是非抽象的”吗?
-
"这个类覆盖了所有必要的非虚拟方法" 你仍然需要为它们提供定义。所以你也需要提供声明,如果你不在同一个地方声明和定义它们。
-
@NicolBolas:定义在 .cpp 中;我只想有一个更少集群的类定义,例如“这个类覆盖了它需要的所有东西,还有一些其他的成员和方法”而不是“这个类有方法 method1 和 method2 和 method3 等等。”
-
@PreferenceBean:是的,我的意思是抽象/纯虚拟。
标签: c++ subclass virtual-functions