我在使用map类时遇到了一个编译器问题,并编写了以下简单程序来突出显示错误:
1 #include <string>
2 #include <map>
3
4 using namespace std;
5
6 int main()
7 {
8 map<string, string> testmap;
9
10
11 testmap["one"] = 11;
12 testmap["two"] = 22;
13 testmap["zero"] = 0;
14 // testmap["zero"] = 10;
15
16 return 0;
17 }
我发现以下编译错误:
g./test.cc./test.cc:在函数int main()': ./ test.cc:13: 23:错误:在testmap.std::映射中的操作符=的模糊重载
我有几个问题:1。起初,我认为映射“值”——11和22正在转换为字符串。然而,在得到这个编译器错误后,我却不这么认为。引擎盖下面到底发生了什么:testmap[“一”]=11;
>
如果值11、22实际上转换为字符串,那么为什么0没有转换为字符串。
我正在努力理解编译器的错误信息,这样我就可以自己解码错误了。我理解其中的一部分,其中模板映射类定义被扩展为字符串类型的键/值。有人能给我指出错误信息中可以帮助我理解问题的部分吗。
非常感谢您的帮助。
谢谢你Ahmed
如果值11、22实际上已转换为字符串,那么为什么0未转换为字符串。
他们不是。你的11和12个作业与basic_字符串匹配
0
是特殊的,因为它允许被隐式转换为指针(在C 03NULL
将被定义为0
),因此转换是不明确的(即char< /code>or
const char*
?)-请参阅http://en.cppreference.com/w/cpp/string/basic_string/operator=了解std::字符串运算符=
s的列表。
4.10指针转换[conv.ptr] 1空指针常量是值为零的整数文字(2.14.2)或类型为std::nullptr_t的prvalue。空指针常量可以转换为指针类型;...
其他整数没有这种指针转换豁免——这就是为什么它们不会出现编译器错误。
你必须:
正确地将数字转换为字符串表示,例如使用std::to_string()
、boost::lexical_cast
、astd::ostringstream
等。。,或
问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,
问题内容: 我正在努力寻找合适的措词来回答我的问题(这可能就是为什么我无法使用Google),但归结为:为什么下面的行无效? 我收到了一个编译时错误。班级和班级。 我已经阅读了有关泛型的Oracle文档,但显然这里缺少一些关键之处。朝正确方向轻推将不胜感激! 问题答案: 今天早些时候,我认为您想成为的数据类型。当然,这是将与您创建的对象匹配的数据类型,但是我怀疑在这种情况下它是否真的是您想要的。请
我刚开始使用React-Native。我尝试使用在我的应用程序中添加google map 我参考了https://github.com/react-community/react-native-maps/blob/master/docs/installation.md并按照所有步骤操作。我获得Google API并将其放入AndroidManifest。我的Google Play服务版本是14.5
问题内容: 对于这两个进口; 我收到此错误: 如何解决此错误? 问题答案: 该错误是由您的Eclipse配置引起的。您可以将其减少为警告。更好的是,使用不属于非公共API的Base64编码器。Apache Commons有一个,或者当您已经使用Java 1.8时,请使用。
我已将我的项目更新为JDK 8。 这对于IOS来说很好,但是当为Android构建时,会发生以下错误。 构建失败 /home/ec2-user/Android-SDK/tools/ant/build . XML:871:无法读取[/tmp/build 1790297227904368708 XXX/Main/libs/user classes . jar](无法处理类[generated/stat
我在写Fizz Buzz的时候遇到了一个意想不到的互动。如果我执行