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
C++ 类模板专门化中的成员函数语法_C++_Templates_Syntax_Template Specialization - Fatal编程技术网

C++ 类模板专门化中的成员函数语法

C++ 类模板专门化中的成员函数语法,c++,templates,syntax,template-specialization,C++,Templates,Syntax,Template Specialization,我有一个类模板,我们称它为a,它有一个成员函数abc(): 我想做的是为这个类创建一个模板专门化,比如说int template <> class A<int>{ public: int value; void abc(); }; 但是这不会编译。删除模板: void A::abc() { 数值+=2; } 顺便说一句,如果您没有专门化整个类模板,您的语法也会起作用。您可以专门化单个成员函数。 template <typename T> v

我有一个类模板,我们称它为
a
,它有一个成员函数
abc()

我想做的是为这个类创建一个模板专门化,比如说
int

template <>
class A<int>{
public:
    int value;
    void abc();
};
但是这不会编译。

删除
模板:

void A::abc()
{
数值+=2;
}

顺便说一句,如果您没有专门化整个类模板,您的语法也会起作用。您可以专门化单个成员函数。
template <typename T>
void A<T>::abc()
{
    value++;
}
template <>
class A<int>{
public:
    int value;
    void abc();
};
template <>
void A<int>::abc()
{
   value += 2;
}
void A<int>::abc()
{
   value += 2;
}
void A<int>::abc()
{
   value += 2;
}
template<class T> struct A {
struct B { };
template<class U> struct C { };
};
template<> struct A<int> {
void f(int);
};
void h() {
A<int> a;
a.f(16);
}
// A<int>::f must be defined somewhere
// template<> not used for a member of an
// explicitly specialized class template
void A<int>::f(int) { /∗ ... ∗/ }