Consider something like this in C#:
class C<T> {}
class D : C<E> {}
class E : C<D> {}
Is an equivalent construction possible in C++ using templates?
Yes, you can forward declare E
:
template <typename T> class C {};
class E;
class D : public C<E> {};
class E : public C<D> {};
or, as per Franks suggestion:
template <typename T> class C {};
class D : public C<class E> {};
class E : public C<D> {};
Whether this works in your real case depends on whether C
requires T
to be complete (it does not in this stripped down example).
PS: I don't know C#, so I am not sure if you wanted private or public inheritance. The above uses public inheritance, while the default for classes declared with the keyword class
is private inheritance.