“错误:当试图从map <char,char> C ++ </char,char>获取char时,期望'{'引入lambda体'

时间:2014-03-07 18:01:00

标签: c++ encryption lambda compiler-errors stdmap

char Substitution::encodeChar(char a, std::map<char, char>&){
    return &[a];
}

这是我的实现尝试(基于预定义的类标题,我可能不会为分配更改)。在Visual Studio中,我在分号上得到错误(参见标题)?

尝试

&.find(a)
相反,在这段时间内,我给了“期望的表达”。

我觉得我发现某个地方有关于 const char char 的问题,但我无法解决这个问题。我之前使用过 map char char ,但在这种情况下以某种方式使用它不起作用。

1 个答案:

答案 0 :(得分:2)

看起来您正在尝试将&视为变量名称。不是。变量名仅由字母,数字和下划线组成。

实际上,在函数参数中,std::map<char, char>&表示参数的类型是“std::map<char, char>的引用”。请注意,我说“参考”。这就是&的含义。它是类型的一部分,并使参数成为参考参数。

因此,您需要为参数指定名称,然后使用该名称:

char Substitution::encodeChar(char a, std::map<char, char>& my_map){
    return my_map[a];
}

我们可以阅读参数std::map<char, char>& my_map,因为my_map是“std::map<char, char>的引用”。然后,my_map[a]访问该地图中的密钥a