Ash*_*h M 5 c++ templates overloading operator-keyword
我在使用c ++中的模板类重载下标运算符时遇到问题.我有一个自定义的地图类实现,我需要能够通过密钥访问元素.
template <typename K, typename DT>
DT& myMap<K, DT>::operator[](K key)
{
for (int i = 0; i<size; i++)
{
if (elements[i].key == key){
return elements[i].data;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在是怎么试图让操作员超负荷的.编译器不接受K键来搜索数据.K是密钥的数据类型.它存储在myMap类包含在数组中的单独类中.
因此,如果在主要我尝试做:
myMap<string, int> * test = new myMap < string, int > ;
test["car"] = 50;
Run Code Online (Sandbox Code Playgroud)
它说:
Error expression must have an integral or unscoped enum type
Run Code Online (Sandbox Code Playgroud)
我不太确定问题是什么.
test是一个指针MyMap,而不是一个对象,所以test["car"]调用内置的解引用运算符,而不是你的重载.
你需要(*test)["car"]或test->operator[]("car")让它发挥作用.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |