gpt4 book ai didi

c++ - 在 static_cast 之后执行类型安全检查的任何方法?

转载 作者:行者123 更新时间:2023-11-28 05:18:55 26 4
gpt4 key购买 nike

接口(interface)限制迫使我使用 static_cast 将 MyObject* 转换为 void*。当在以后的接口(interface)调用中取回此指针时,我必须执行另一个从 void*MyObject* 的 static_cast,因为 dynamic_cast 在这种情况下不起作用(解释为 here ) .

但是,我想执行类型安全检查,以确保在其他人更改部分代码时不会发生奇怪的事情。如果有什么检查可以在这种情况下进行,哪种检查最好/最方便?

最佳答案

不,一旦你点击 void*正确转换取决于代码。根本原因是 void*你回来理论上可以指向几乎任何东西:一个char , int , std::string , std::complex<double> , std::map<int, int>::iterator当然还有MyObject .

您将面临的问题是,您的转换仅在 void* 时有效。实际上指向一个MyObject ,但在那种情况下,无论如何都不需要强制转换。

一个非转换的解决方法是保留一个 std::unordered_set<void*>所有的 void*你通过类型转换创造了MyObject* , 通过 ~MyObject() 删除过期指针,并在转换前检查该组。

关于c++ - 在 static_cast 之后执行类型安全检查的任何方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com