他のクラスのテンプレートとして使用できるクラスを作成しようとしています。多分私は間違ったキーワードを探しています。基本的にはPrimaryClass
とクラスA
を純粋な仮想にしたいと思います。 DerivedClass
およびC
は、それぞれのクラスから導かれる。 問題は、継承クラスを呼び出すことです。C
をDerivedClass
私は純粋な仮想PrimaryClass
をオーバーライドしていません。私はこれを認識していますが、それを修正する方法はわかりません。入れ子抽象基本クラスの汎用テンプレート
私はC
がA
から派生しているので印象を受けました。 私はA
に
virtual void DoFunThings (C<T>* d) {}
でC
を変更した場合、それは動作しますが、これのポイントはA
の異なっ派生バージョンが使用できるようにすることです。それは、このようにそれを行うことはできません場合はどのように1は自分の目的の機能で一般的なオブジェクト指向のコードをすることについて
template <class T>
class A
{
public:
virtual void FunThings (const A<T> &orig, A<T>* new_one) = 0;
T thing{};
};
template <class T>
class C: public A <T>
{
public:
virtual void FunThings (const C<T> &orig, C<T>* new_one) {}
};
template <class T>
class PrimaryClass
{
public:
virtual void DoFunThings (A<T>* d) = 0;
};
template<class T>
class DerivedClass: public PrimaryClass<T>
{
public:
virtual void DoFunThings (C<T>* d) {}
};
int main()
{
DerivedClass<int> derived;
return 0;
}
を行くことができますか?
私は上書きの問題を認識しており、Aの派生を利用するための解決策が必要だと述べました。 – MacAttack