请问我想对带参数的类模板进行特化(specialization),为什么不能成功。代码如下:

snowedforest 2001-08-26 01:15:16
#include<iostream.h>
template<class T1,int N>
class C1
{
protected:

T1 First,Second;
public:
C1(T1,T1);
T1 GetMaxOne();
int Value[N];
};
template<class T1,int N>
C1<T1,N>::C1(T1 x1,T1 x2)
{
First=x1;
Second=x2;
}
template<class T1,int N>
T1 C1<T1,N>::GetMaxOne()
{
return First>Second?First:Second;
}
//下面对类模板进行特化
template<>
class C1<char*,const int>
{
protected:
char *First;
char*Second;

public:
C1(char*,char*);
char*GetMaxOne();
char Value[N];
};
template<>
C1<char*,N>::C1(char*x1,char*x2)
{
First=x1;
Second=x2;
}
template<>
char*C1<char*,N>::GetMaxOne()
{
return "ABC";
}

//T1 MaxOne(T1 x,T1 y){return x>y?x:y;};
void main()
{
C1<double,5> X(1.83,2.5);
cout<<X.GetMaxOne()<<endl;
C1<char*,10> Y("123","XYZ");
cout<<Y.GetMaxOne()<<endl;

}
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowedforest 2001-08-26
  • 打赏
  • 举报
回复
您提供的办法我试过了,可以的。谢谢。
您以后如果知道如何用特化解决了,请教教我吧。再次感谢。 :)
蒋晟 2001-08-26
  • 打赏
  • 举报
回复
我用特化的时候也有些问题。现在我都是用派生的方法来解决。
typedef CMyC1 C1<char*,const int>;
snowedforest 2001-08-26
  • 打赏
  • 举报
回复
多谢蒋兄。我试试您提供的办法。
不过我想学习一下特化这种方法,不带参数N时是可以的,但加了参数就会出错了。您看能不能在此基础上修改一下呢?
蒋晟 2001-08-26
  • 打赏
  • 举报
回复
自己从模板派生一个下来,然后再写Serialize
class CMyC1:public C1<char*,const int>{
......
};
snowedforest 2001-08-26
  • 打赏
  • 举报
回复
有人愿帮忙吗?
snowedforest 2001-08-26
  • 打赏
  • 举报
回复
??
snowedforest 2001-08-26
  • 打赏
  • 举报
回复
问题虽然属初级,但也敬请高手赐教。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧