Вы не можете получить из шаблона; вы можете получить только из класса. Таким образом, class B
должно быть получено из экземпляра из A
:
class B : public A<int> {
};
Если вы хотите, чтобы B
был шаблоном, вы должны сказать так:
template <class Ty>
class B : public A<Ty> {
};
В любом случае доступ к членам базового класса немного сложнее, чем с обычным классом, поскольку шаблон может быть специализированным, а члены, объявленные в самом шаблоне, могут не существовать в конкретной специализации. Итак, вы должны сказать, что вы говорите о члене:
class B : public A<int> {
unsigned f() { return A<int>::my_var; }
};
Вот еще один способ сказать то же самое:
class B : public A<int> {
unsigned f() { return this->my_var; }
};