Я пытаюсь написать класс шаблона, который имеет член переданного типа, который предполагается использовать в методе специализированного класса шаблона. Как это:Как получить доступ к полю элемента класса шаблона в специализированном классе шаблона в C++?
template <class T>
class MyTemplateClass
{
public:
MyTemplateClass() {}
void DoSomething()
{
DoSomethingWithMember();
}
void DoSomethingWithMember() {}
protected:
T m_member;
};
template<>
class MyTemplateClass<float>
{
public:
void DoSomethingWithMember()
{
printf("Member is %f", m_member);
}
};
Так что я могу совершать звонки, как:
MyTemplateClass<float> obj2 = MyTemplateClass<float>();
obj2.DoSomething();
Специализированный класс шаблон не компилируется, выдает ошибку:
"Use of undeclared identifier
m_member
".
Есть ли способ для специализированный шаблонный класс для доступа к исходным членам класса без дублирования кода с новым специализированным типом? Или любой другой способ достичь того, что я пытаюсь сделать здесь?
Специализируясь шаблон класса не то же самое, как переопределение виртуальной функции, вы не» t просто заменить одну часть и «наследовать» остальную часть класса из основного шаблона. Специализация шаблона класса должна быть полным классом, поэтому, если она использует член, называемый 'm_member', он должен иметь член, называемый' m_member'. –