小编Ash*_*h M的帖子

使用模板类重载[]运算符的问题

我在使用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)

我不太确定问题是什么.

c++ templates overloading operator-keyword

5
推荐指数
1
解决办法
155
查看次数

标签 统计

c++ ×1

operator-keyword ×1

overloading ×1

templates ×1