回 帖 发 新 帖 刷新版面

主题:求助高手:模板特化问题

求助:模板特化问题

//声明
template <class CALTYPE> class COperDefault;

//原始定义
template<class SING_TYPE>
class CSingleton
{
....
};

//特化
template<CALTYPE>
class CSingleton<COperDefault<CALTYPE> >
{
........
};

结果出现编译错误:
1>e:\sourcecode\calculator\calculator\singleton.h(40) : error C3211: 'CSingleton<COperDefault<CALTYPE>>' : explicit specialization is using partial specialization syntax, use template <> instead
1> with
1> [
1> CALTYPE=CALTYPE
1> ]
1> e:\sourcecode\calculator\calculator\singleton.h(42) : see declaration of 'CSingleton<COperDefault<CALTYPE>>'
1> with
1> [
1> CALTYPE=CALTYPE
1> ]
1>CALCULATORDlg.cpp
1>e:\sourcecode\calculator\calculator\singleton.h(40) : error C3211: 'CSingleton<COperDefault<CALTYPE>>' : explicit specialization is using partial specialization syntax, use template <> instead
1> with
1> [
1> CALTYPE=CALTYPE
1> ]
1> e:\sourcecode\calculator\calculator\singleton.h(42) : see declaration of 'CSingleton<COperDefault<CALTYPE>>'
1> with
1> [
1> CALTYPE=CALTYPE
1> ]



请问各位高手,问题出在哪,该如何修改?

回复列表 (共7个回复)

沙发


根据错误提示 我个人认为是定义时候出错了
 use template <> instead
1> with
1> [
1> CALTYPE=CALTYPE
1> ]
试试把这里
template<CALTYPE>
class CSingleton<COperDefault<CALTYPE> >
改为
template<>class CSingleton<COperDefault<CALTYPE> >

可以的话给源码我喔帮你调试

板凳

//特化
template<CALTYPE>
class CSingleton<COperDefault<CALTYPE> >
{
........
};
既然特化为COperDefault<CALTYPE>类型,还需要template<CALTYPE>有何用?
compiler的提示很明确instead of template<>  OK?

3 楼

多谢各位的热心回答。后来我自己搞明白了。是template<CALTYPE>写错了,应该改为
template<class CALTYPE>
另外,不能够写成template<>,因为在下边的定义中有CSingleton<COperDefault<CALTYPE> >,其中的
标识符CALTYPE未定义。

4 楼

像你那么写,
没看到偏特化,还是模板吧

5 楼

首先,惭愧。
其次,还是惭愧。
在看到这个问题的时候,并没有经过仔细的考虑,就贸然给出了一个武断。很是不好意思。LZ的判断是正确的。对于template的specialties而言,当然需要template<>,之说以这样,是因为CSingleton<>的类型参数是一确定的。而当今,COperDefault<CALTYPE>为一参数类型。那么当然需要template<class CALTYPE>。
留此言,对自己是一提示。多谢LZ!

6 楼

不客气,大家相互学习。我有时太粗心,常常犯一些低级错误。

7 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

我来回复

您尚未登录,请登录后再回复。点此登录或注册