扫地僧与茶 2016-03-05 14:43 采纳率: 33.3%
浏览 1356

关于C++中运算符重载的问题

template
HashTable&HashTable::Insert(const E&e)
{
//散列表插入
K k=e; //抽取key值
int b=hSearch(k);
//检查是否能完成插入
if(empty[b])
{
empty[b]=false;
ht[b]=e;
return *this;
}

散列表中的插入操作,要往Insert()中传的e是string类型的,然后下面的K k=e中的K是int,想要把“=”重载,使得得到的k值等于根据f(e)得到的一个int值。
f(e)=string的第一个字符序号*100+string的最后一个字符序号
这个“=”重载应该怎么写?

  • 写回答

1条回答

  • 忘世麒麟 2016-03-05 15:05
    关注

    我理解你的题意是:k是一个int类型,希望重载一个int类型中已有的“=”操作符,使得该操作符可以等价于:f(e)=序列号+序列号。
    假如我的理解无误的话,很抱歉这是无法成功的,因为你不能破坏了基本操作类型中的规则。如果你希望完成你的操作,那么K就不能是一个int类型,而是一个自定义的类型
    即:一个类,然后这个类重载了operator=。(你这里的K应该使用#define int K 这种方式定义的吧)。

    
    
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器