Хотя это не совсем то же самое, вы можете сделать это вместо этого:
class C;
C* c = 0;
, а затем позже, в файле реализации, после включения заголовочных файлов для «A» и «B», определите «C» следующим образом:
class C : public B<A> {};
Использование наследования вместо typedef должно работать, если вам нужно только использовать конструктор по умолчанию B .