gpt4 book ai didi

c++ - 如何在 C++ 中的专用模板类中访问模板类成员字段?

转载 作者:行者123 更新时间:2023-11-30 03:34:23 24 4
gpt4 key购买 nike

我正在尝试编写一个模板类,该模板类具有传递类型的成员,该成员应该用于专门模板类的方法。像这样:

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".

有没有一种方法可以让专用模板类访问原始类成员,而无需使用新的专用类型复制代码?或者任何其他方式来实现我在这里尝试做的事情?

最佳答案

或者,您可以只特化一种方法,例如:

template <class T>
class MyTemplateClass
{
public:
MyTemplateClass(T t) : m_member(t) {}

void DoSomething() { DoSomethingWithMember(); }

void DoSomethingWithMember();

protected:
T m_member;

};

// **Fully** Specialize DoSomethingWithMember for float.
template <>
void MyTemplateClass<float>::DoSomethingWithMember()
{
std::cout << "Member is " << m_member;
}

Demo

关于c++ - 如何在 C++ 中的专用模板类中访问模板类成员字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42077951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com