継承の問題が発生しており、ソリューションがエレガントかどうかわかりません。こんな授業があります
class Var
{
public:
virtual void doSomething();
}
class DerivedVar : public Var
{
public:
virtual void doSomething();
void doSomethingElse();
}
MyBase を継承する MyDerived もあります。MyBase には Var 型のメンバーがあり、MyDerived には DerivedVar のメンバーが必要なので、doSomething() を呼び出すことができます。現在、この問題を解決するためにテンプレートを使用しています
template<typename VarType>
class MyBase
{
protected:
VarType var;
public:
MyBase() { var.doSomething(); }
}
class MyDerived : public MyBase<DerivedVar>
{
public:
MyDerived() : MyBase() { var.doSomethingElse(); }
}
これを行うためのより良い方法があるかどうかを知りたい (例: テンプレートを使用する必要なし)