【发布时间】:2013-04-22 08:17:39
【问题描述】:
我班上的 2 个运算符有点问题。
我的班级被宣布:
template <class keyType, class valueType>
class MyMap{
keyType keys[MAX];
valueType values[MAX];
int size;
}
我需要重新定义运算符 [],例如当我调用时:std::cout<<MyMap1["a"];。
keyType& operator[] (keyType key){}
它工作正常。我也用它来做作业,很好,例如:MyMap1["a"]="a1";
代码很完美。但是在我的operator[] 中,我增加了size 参数,它仅在我想进行分配时才有用。当我只做std::cout时,我不想增加它。
所以也许我应该重新定义 operator= 函数但是当我不能写时:
void operator=(valueType value){}
因为MyMap1["a"] = "a1" 的左成员是keyType 而不是MyMap 类型。
我该怎么办?
【问题讨论】:
-
如果你的类是一个 K->V 映射,那么 operator[] 应该被定义为
valueType& operator[] (keyType key),因为当你写map[key]时你通常想读/写存储在给定键下的价值事物.. -
没错!但是这两种类型是字符串,所以我没有看到那个错误。对我的问题有什么想法吗?
标签: c++ operators redefinition