繁体   English   中英

专门课程的专业功能

[英]specialized function of a specialized class

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

        #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限定符,即使在defintion中也是如此。

这是一个实例

我认为你没有使用尾随的const修饰符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM