将类指针类型转换为键时出错
Error converting class pointer type to key
我对 c++ 有点陌生,我遇到了一个奇怪的错误。我写了一个相当简单的类,叫做endpoint
。在endpoint
中,我有一个类型为std::map<endpoint*, ppr_t>
的属性(其中ppr_t
是结构的typedef
(。当我尝试通过对属性运行 count 方法来检查映射中的项目时,出现以下编译错误:
error: invalid conversion from ‘const endpoint*’ to ‘std::map<endpoint*, ppr_t>::key_type {aka endpoint*}’
我不确定为什么会弹出此错误。也许是因为这个类没有比较功能?即便如此,使用时也会发生相同的错误std::unordered_map
.
您正在尝试将const endpoint*
分配给endpoint
,这会丢弃常量限定符。这样做是为了防止您修改地图的键值。
地图旨在使用其键快速查找值。当您将一对插入到映射时,您将用值"绑定"特定键。例如,电话簿。您记得,如果您在电话簿中找到他的名字(密钥(,则可以致电您的朋友(值 = 电话号码(。但是如果你改变他的名字,那个电话号码的所有者是谁?这种情况很奇怪,会导致错误。但相反,当他告诉你他买了一部新手机时,你可以很容易地更改你的朋友号码。
因此,如果您从键中获取 const 指针,则只能使用它,而不是阻止地图的组织,并且仍然通过其键查找值。您可以使用非常量指针或对值的引用,并随时更改它们,它们仍将与常量键一起使用。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 类型转换指向 int 的 void 指针时出错
- 类型转换时出错.混乱