模板类方法定义语法

Jul*_*usz 4 c++ templates

班级定义:

template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&)=&_compFunc<K> > class X {};
Run Code Online (Sandbox Code Playgroud)

我想在类代码块之外定义一个类方法.像这样:

template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&)=&_compFunc<K> >
X<K, V, hashFunc, compFunc>::X() { }
Run Code Online (Sandbox Code Playgroud)

g ++ v.4.4.3返回

error:包含'X :: X()'的类的模板参数的默认参数

为什么编译器会抱怨,我怎么能让它工作?

Joh*_*ing 5

您没有声明或定义构造函数X.此外,您在尝试的X :: X定义中重复了默认模板参数.

这是固定代码,main-ified:

template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&)=&_compFunc<K> > 
class X 
{ 
    X();
};

template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&) >
X<K, V, hashFunc, compFunc>::X() { }

int main()
{
}
Run Code Online (Sandbox Code Playgroud)