【发布时间】:2019-12-17 04:12:04
【问题描述】:
我希望std::map<string, any> *var1 指向与std::any *var2 相同的内存地址/值,因为我知道var2 指向map<string, any>。
以下似乎有效:
std::map<string, any> *var1 = any_cast<std::map<string, any>>(var2);
没事吧?问题是,即使 var2 实际上不是 std::map<string, any>* 而是其他东西,它也不会表示演员阵容错误,但如果它仍然有效。
我做得对吗?
std::map<string, any> *mapptr;
std::any realmap = std::map<string, any>({{"key", "value"}, {"key2", 5}});
std::any *ptrtomap = &realmap;
mapptr = any_cast<std::map<string, any>>(ptrtomap);
// Interesting part below
realmap = 6;
mapptr = any_cast<std::map<string, any>>(ptrtomap);
将变量的类型更改为整数后,任何指针指向的我仍然可以将该指针转换为 std::map 类型的指针。
什么???
【问题讨论】: