c++ - 如何专门化模板类成员函数?

标签 c++ templates traits template-specialization specialization

考虑以下示例:

    template <class T, class U>
class Test {
public:
    void f(){std::cout<<"f() not specized"<<std::endl;}
    void g(){std::cout<<"g() not specized"<<std::endl;}
    void h(){std::cout<<"h() not specized"<<std::endl;}

    //void g<long, double>(){}
};

这里我在注释代码上有错误。 我想达到预期结果的唯一方法是将整个类(class)空间化。但是在下面提到的类中,我不能使用原始类的默认行为(例如 f() 和 h() 函数)。

template <>
class Test<long, double> {
public:
    void f(){std::cout<<"f() specized long, double"<<std::endl;}
};

那么有没有办法将原始类中的函数空间化??

最佳答案

当然可以do it with a definition :

template<>
void Test<long, double>::f(){std::cout<<"f() specialized long, double"<<std::endl;}

关于c++ - 如何专门化模板类成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378549/

相关文章:

c++ - 在另一个项目中包含继承类时出现抽象类的链接器错误

c++ - 为什么我不能使用 auto 声明变量?

c++ - 为什么模板只能在头文件中实现?

c++ - 替代网络框架上的显式实例化

javascript - JS 中基于 Mixin 和 Trait 的组合

php - 我应该如何以及在何处使用 php 中的关键字 "use"

generics - scala 有没有办法在没有示例实例的情况下生成通用实例?

C++ 输入输出排序

c++全局/堆栈实例ctor/dtor在调用静态函数时崩溃

c++ - 是否可以将纯虚函数覆盖到模板?