关于模板重载运算符的问题

lucky_06 2010-01-04 05:18:34
有如下的模板类

template<int i>
class CTemp
{
private:
int g;
public :
CTemp():g(i){}

//例如,我可以重载类型转换的运算符
operator int() { return g ;}


};

//这时候 ,我可以这样
CTemp<2> aTemp2;

int i ;
i=aTemp3; //这时候i的值是 2;

//如果我想如下这样做,应该怎样定义?
CTemp<3> aTemp3;
aTemp3 = aTemp2;//这里,其实就是实现一个类型转换的运算符,应该怎样定义?
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucky_06 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 taodm 的回复:]
你自己不说你的原始需求,谁能知道,又有谁可以给你真正有效的提示。
[/Quote]无语……
taodm 2010-01-05
  • 打赏
  • 举报
回复
你自己不说你的原始需求,谁能知道,又有谁可以给你真正有效的提示。
lucky_06 2010-01-05
  • 打赏
  • 举报
回复
为什么这种模板类之间相互赋值是错误?
你知道我的具体需求么?
凭什么说是错呢?
不同的问题在问题的地方都有其相应的解决方法.[Quote=引用 7 楼 taodm 的回复:]
重载operator CTemp <XXX>类型转换符
重载operator=
重载构造函数
。。。。
都可以解决
但是,其实当你提出这个问题的的时候,这99%已经是一个错误的需求了。
试图解决它往往让你错得更远。
[/Quote]
taodm 2010-01-05
  • 打赏
  • 举报
回复
重载operator CTemp<XXX>类型转换符
重载operator=
重载构造函数
。。。。
都可以解决
但是,其实当你提出这个问题的的时候,这99%已经是一个错误的需求了。
试图解决它往往让你错得更远。
lucky_06 2010-01-05
  • 打赏
  • 举报
回复
但是这样就无法 访问 私有的成员变量了
lxy4437 2010-01-04
  • 打赏
  • 举报
回复

operator int() const { return g ;}

template<int j>
const CTemp & operator =(const CTemp<j> &temp)
{
g = temp;

return *this;
}
yshuise 2010-01-04
  • 打赏
  • 举报
回复
一般可以有模板的oerator =
或是模板的构造函数(其实不能叫构造函数)。
macrojj 2010-01-04
  • 打赏
  • 举报
回复
搞个int的构造函数也可以吧
macrojj 2010-01-04
  • 打赏
  • 举报
回复
template <int i>
class CTemp
{
private:
int g;
public :
CTemp():g(i){}

//例如,我可以重载类型转换的运算符
operator int() { return g ;}

CTemp operator=(int i){g=i;return *this;};


};



int main()
{
//这时候 ,我可以这样
CTemp <2> aTemp2;

int i ;
i=aTemp2; //这时候i的值是 2;

//如果我想如下这样做,应该怎样定义?
CTemp <3> aTemp3;
aTemp3 = aTemp2;//这里,其实就是实现一个类型转换的运算符,应该怎样定义?

}
pengzhixi 2010-01-04
  • 打赏
  • 举报
回复
不要给内置类型来这套

64,684

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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