Предполагая, что вы имели в виду:
template<typename T>
class B { and the rest of it }
Тогда B не является классом, поэтому такого понятия, как B*
, не существует.Если ваш код не находится внутри шаблона класса B, то есть в этом случае B
относится к тому, что посторонние называют B<T>
для некоторого типа T.
Содержимое ...
также очень важно.Это нормально:
A *a = new B<int>();
B<int> *b = static_cast<B<int>*>(a);
b->Method1();
Наконец, вы можете только dynamic_cast
, если у классов есть виртуальные функции, которых в вашем примере нет.