【发布时间】:2023-03-27 14:22:01
【问题描述】:
我有以下问题:
std::map<A*,double> map;
void getColor(A const * obj){
double d = map[obj]; // does not compile wihtout const_cast<A*>(obj)
// do something
}
我有一个映射std::map(某处),它存储指向对象A 的指针。
我有一个函数getColor,它不操纵对象A,因此将指向const A 的指针作为输入。
如果不使用 const_cast,函数 getColor 将无法编译。
const cast 是一个设计问题,但如果我不想在map const 中制作密钥,我不知道如何规避它.
任何帮助表示赞赏。
【问题讨论】:
-
出于好奇:您为什么不想将键设为 const?
-
为什么你不想将密钥设为
const A*? -
@Gonmator 我认为 C++14 在这里没有帮助
-
c++14有什么不同??
-
@Gabriel 透明/异构比较器。但正如我在链接的问题中指出的那样,这不适用于 map::at