我正在开发一个遗留的 C 产品,它有很多转换和潜在的数据丢失——从 int 到 short 类型的转换。在 Visual Studio 中,如果发生这种数据丢失,是否有办法导致异常,或者我是否需要用断言填充我的代码?
最佳答案
C++ 的语言特性不支持在有损转换时抛出异常。如果您使用大括号初始化,从 C++11 开始,编译器需要让您知道可能缩小的转换,但这并不意味着转换正在缩小在实践中(即在运行时).
解决此类问题的最佳方法是编写自己的库来执行此操作,或者使用已经存在的库,例如 SafeInt .
关于c++ - 如果我在转换中丢失数据,我可以在 C++ 中引发异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256436/