C++ 継承構造を作成する場合、複数の場所でまったく同じメンバー関数を定義する必要があります。
B が抽象基本クラスで、D、E、および F がすべて B から継承されている場合、次のようになります。
class B
{
virtual func A( ... params ) = 0;
};
class D : public B
{
func A( ... params );
};
/* ... etc... similar implementations for E and F */
したがって、ここには明らかに重複があります。B へのインターフェイスが大きい場合、インターフェイスを変更する必要がある場合、変更する場所が多くなる可能性があります。
同僚は、巧妙に作成された #includes を埋め込んだいくつかの策略を提案しました。
class D: public B
{
#include "B_Interface.h" // B_Interface.h is a specially crafted .h file
}
これは少し不器用に見えますか?それは...ですか?二重メンテナンスを避けるためのより良い解決策はありますか?
また、ここでの解決策は、Visual Assist X のような言語をサポートするための本当に優れたツールでしょうか?
編集:派生クラスには一意の実装が必要であると仮定します。