Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在模板类中专门化模板成员函数?_C++_Templates_Specialization - Fatal编程技术网

C++ 如何在模板类中专门化模板成员函数?

C++ 如何在模板类中专门化模板成员函数?,c++,templates,specialization,C++,Templates,Specialization,例如: template<unsigned number> struct A { template<class T> static void Fun() {} }; 模板 结构A { 样板 静态void Fun() {} }; 并且想要专门化A::Fun() 模板 A::乐趣() { /*这里有一些代码*/ } 不起作用。怎么做?谢谢。首先,您忘记指定函数的返回类型(void)。其次,您需要有两个模板:一个是因为您显式地专门化了类模板,另一个

例如:

template<unsigned number>
struct A
{
    template<class T>
    static void Fun()
    {}
};
模板
结构A
{
样板
静态void Fun()
{}
};
并且想要专门化A::Fun()

模板
A::乐趣()
{
/*这里有一些代码*/
}

不起作用。怎么做?谢谢。

首先,您忘记指定函数的返回类型(
void
)。其次,您需要有两个
模板
:一个是因为您显式地专门化了类模板,另一个是因为您显式地专门化了其成员函数模板

因此,这是正确的语法:

template<> // Because you are explicitly specializing the A class template
template<> // Because you are explicitly specializing the `Fun()` member template
void A<1>::Fun<int>()
{
    /* some code here. */
}
template//因为您正在显式地专门化类模板
模板//因为您显式地专门化了'Fun()`成员模板
void A::Fun()
{
/*这里有一些代码*/
}

首先,您忘记指定函数的返回类型(
void
)。其次,您需要有两个
模板
:一个是因为您显式地专门化了类模板,另一个是因为您显式地专门化了其成员函数模板

因此,这是正确的语法:

template<> // Because you are explicitly specializing the A class template
template<> // Because you are explicitly specializing the `Fun()` member template
void A<1>::Fun<int>()
{
    /* some code here. */
}
template//因为您正在显式地专门化类模板
模板//因为您显式地专门化了'Fun()`成员模板
void A::Fun()
{
/*这里有一些代码*/
}

因为A也是一个模板?@huseyintugrulbuyukisik:Exactly@AndyProwl它起作用了!我编辑了这个问题,它更复杂。请帮我看一下好吗?谢谢。@user1899020:如果它有效并回答了您的问题,那么您应该接受答案。如果你有一个新问题,那么你应该发布一个新问题,而不是编辑已经回答的问题:)这是正确的使用方法StackOverflow@AndyProwl我在这里提出了新问题。谢谢。因为A也是一个模板?@huseyintugrulbuyukisik:Exactly@AndyProwl它起作用了!我编辑了这个问题,它更复杂。请帮我看一下好吗?谢谢。@user1899020:如果它有效并回答了您的问题,那么您应该接受答案。如果你有一个新问题,那么你应该发布一个新问题,而不是编辑已经回答的问题:)这是正确的使用方法StackOverflow@AndyProwl我在这里提出了新问题。谢谢