代码之家  ›  专栏  ›  技术社区  ›  Jingcheng Yu

如何专门化类模板的静态函数?

  •  0
  • Jingcheng Yu  · 技术社区  · 9 年前

    当我试图写这样的东西时:

    #include <iostream>
    
    template <class T>
    class A
    {
    public:
        static void doit();
    };
    
    template <>
    static void A<int>::doit() 
    {
        std::cout << "int" << std::endl;
    }
    
    template <>
    static void A<double>::doit()
    {
        std::cout << "double" << std::endl;
    }
    
    int main()
    {
        A<int>::doit();
        A<double>::doit();
    }
    

    我收到一个编译错误: The capture of error message

    专门化整个类是可以的。我只是想知道有没有办法只专门化静态函数?

    1 回复  |  直到 9 年前
        1
  •  3
  •   Heavy    9 年前

    您应该指定 static 关键字只能在声明中使用一次。

    试试看:

    template<>
    void A<int>::doit() 
    {
        std::cout << "int" << std::endl;
    }
    
    template<>
    void A<double>::doit()
    {
        std::cout << "double" << std::endl;
    }