基底クラスがそれを提供しない場合、メソッドの埋め込みについてどう思いますか?私はそれが提供されている場合は、基本クラスのメソッドを再利用したいと思います。テンプレート提供の基底クラスを変更する
例:
#include <iostream>
struct Base0 { };
struct Base1 { void m() { std::cout<<"Base1\n"; } };
template<typename T>
struct Derived : public T {
//if T doesn't provide m, define it here, otherwise reuse the base class method
void m(){ /*? std::cout<<"Derived\n"; ?*/ }
};
int main(){
Derived<Base0> d0;
d0.m(); //should print "Derived"
Derived<Base1> d1;
d1.m(); //should print "Base1"
}
を行うことができますとにかく注文する。 Derivedは型であり、Derivedが 'm()'関数を持っている限り、常に基本関数 'm()'を上書きします。 –
継承、仮想関数、テンプレートというコンセプトを組み合わせています。全体的にそれはコードのにおいです。テンプレートを持ち、継承と仮想関数を避けます。 –