Возможно ли, чтобы специализированная версия класса передавала некоторые или все функции исходного класса шаблона?Возможно ли, чтобы специализированная версия могла поделиться некоторыми функциями с исходным классом шаблона?
т.е. рассмотрим есть шаблонный класс,
template <typename T>
class A
{
A()
{}
A(const A& ref)
{}
void f1()
{
//do something
}
void f2()
{
//do something
}
void f3()
{
//do something
}
}
и имеет специальную версию для конкретного типа данных, которые только намереваются добавить некоторые функциональные возможности присоединения к общей версии в дополнение оригинальные общие функциональные возможности.
template<>
class A<int>
{
void f4()
{
//do something
}
}
теперь, что я конкретно хочу, что это специализированная версия для делить все, от его общей версии, включая конструкторов, если это возможно.
Возможно, наследование - лучший выбор здесь? –
Нет, это невозможно так прямо, как вы хотите. Имейте это в виду: каждая специализированная специализация - это отдельное определение класса с другим типом (таким образом, имя (для компилятора, независимо от того, имеют ли они имя с тем же именем). –
Если вы не знаете, специализируются на отдельных функциях шаблона класса, не специализируясь на всем классе. –