首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模板类方法定义语法

模板类方法定义语法
EN

Stack Overflow用户
提问于 2010-11-19 17:25:52
回答 2查看 1.3K关注 0票数 4

类别定义:

代码语言:javascript
运行
复制
template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&)=&_compFunc<K> > class X {};

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

代码语言:javascript
运行
复制
template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&)=&_compFunc<K> >
X<K, V, hashFunc, compFunc>::X() { }

g++ v.4.4.3返回

错误:包含“X::X()”的类模板参数的默认参数

为什么编译器会抱怨,我如何使它工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-19 17:28:50

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

这是固定代码,main-ified:

代码语言:javascript
运行
复制
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()
{
}
票数 5
EN

Stack Overflow用户

发布于 2010-11-19 17:28:27

您不应该重复默认的模板参数:

代码语言:javascript
运行
复制
template<class K, class V,
         unsigned hashFunc(const K&),
         int compFunc(const K&,const K&)>
X<K, V, hashFunc, compFunc>::X() { /* ... */ }

正如John所指出的,类X显然也必须声明构造函数,但为了清楚起见,我假设代码被删除了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4227659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档