2016-02-13 32 views
1

我有一個基類Base有很多純虛方法,我想定義幾個類的形式class Foo: public Base和類似class Bar,class Baz等 - 所有這些都應該是非虛擬的,並且所有這些都在.cpp文件中實現其虛擬方法,而不是在類定義中內聯。目前,在這些類別的每個定義中,我聲明瞭void method1() override,void method2() override等等,並且我必須複製粘貼這些東西多次,因爲我繼承了class Base一個簡潔的方式說「這個類覆蓋所有必要的方法是非抽象的」

是否有另一種更簡潔的方式說「這個類覆蓋所有必要的方法是非抽象的」?

注:

  • 我知道我可以做一些基於宏觀雜牌組裝電腦,我不是那個意思。
  • 基於C++反射庫的解決方案並不可取,但可以接受。
  • 如果有幫助,您可以忽略多重繼承。
+2

你問奇怪的問題的人。你能用一個你想要實現的(僞代碼)例子來填充嗎? –

+1

您的意思是「所有必要的方法都是非抽象的」? –

+0

「*此類重寫所有必需的方法爲非虛擬*」您仍然必須爲它們提供*定義*。所以你也需要提供聲明,如果你沒有在同一個地方聲明和定義它們的話。 –

回答

2

您必須聲明你希望覆蓋每個功能。

沒有辦法從每個基地自動聲明所有可重寫的函數。

如果這是一個問題,那麼這是一個很好的指示器,表明您的接口有太多的成員函數。

不要忘了Single Responsibility Principle

相關問題