所以我有这个功能
template<class KEY,class T, bool (*tlt)(const KEY& a, const KEY& b)>
T BSTMap<KEY,T,tlt>::put(const KEY& key, const T& value) {
if (!has_key(key))
throw KeyError("BSTMap::put");
this[key] = value;
++mod_count;
return this[key];
}
应该使用我的重载[],如此代码所示。
T& BSTMap<KEY,T,tlt>::operator [] (const KEY& key) {
if (has_key(key))
return find_key(map, key)->value.second;
find_key(map, key)->value = Entry(key, T());
used++, mod_count++;
return find_key(map, key)->value.second;
}
本质上,[]
运算符在这种情况下接受KEY并创建条目(如果它不存在),否则它返回对该区域中现有值的引用。那么我的问题是,如何在文件中使用重载的[]
运算符来修改我的数据。我尝试使用this[]
,但这不起作用。
答案 0 :(得分:4)
该方法的官方名称为operator[]
,因此您可以直接使用该名称:
return operator[](key);
您也可以取消引用this
来提供参考:
return (*this)[key];
答案 1 :(得分:2)
this
是一个指针,大概是(*this)[key]
首先解除引用,然后编制索引。