次のようなテンプレートがあります。
template<typename T>
struct foo {
foo(T t) {
//code
}
virtual double computation() = 0;
//other members
};
ユーザーに独自のサブクラスにカスタムを提供してもらいT
、次のcomputation()
ようにします。
struct my_foo : public foo<std::string> {
double computation() override { return 9.99; }
};
問題は、これが機能しないことです:
my_foo("hello");
スーパークラスのコンストラクターを呼び出すだけの場合でも、サブクラスごとに新しいコンストラクターを作成するようにユーザーに依頼する必要があります。これはばかげているように見えます。
私により適した代替の「デザインパターン」を提案できますか?