"Error: expected a '{' introducing a lambda body"尝试从地图<字符,字符中获取字符时> C++


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

这是我的实现尝试(基于预定的类标头,我可能不会更改为作业)。在Visual Studio中,我会在半隆上获得错误(请参阅标题)?

尝试

&.find(a)

相反,在此期间给我"预期的表达"。

我想我在某个地方发现了有关 const char vs. char 的东西,但我无法将其缠绕在它上。我已经使用了 MAP CHAR 以这种方式使用,但是在这种情况下以某种方式使用它不起作用。

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

实际上,在函数参数中,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

最新更新