有人可以解释一下为什么为什么不编译...专业类的专业功能吗?
在模板化类的专用版本中,专用功能未编译。

        #include<iostream>
        using namespace std;

    //Default template class
        template<typename T>
        class X
        {
        public:
            void func(T t) const;
        };


        template<typename T>
        void X<T>::func(T b) const
        {
            cout << endl << "Default Version" << endl;
        }


//Specialized version
        template<>
        class X<int>
        {
            public:
            void func(int y) const;
        };

        template<>
        void X<int>::func(int y)
        {
            cout << endl << "Int Version" << endl;
        }

        int main()
        {
            return 0;
        }

最佳答案

类模板的显式专门化是具体的类,而不是模板,因此您可以(或更应该)只写:

// template<>
// ^^^^^^^^^^
// You should not write this

void X<int>::func(int y) const
//                       ^^^^^
//                       And do not forget this!
{
    cout << endl << "Int Version" << endl;
}

因此省略了template<>部分。

另外,请注意,您的func()函数在声明中是const限定的-因此,即使在定义中,也必须使用const限定词。

这是一个live example

10-08 17:13