扫地僧与茶 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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算