在c++中正确的强制类型转换

Casting the proper way in C++

本文关键字:类型转换 c++      更新时间:2023-10-16

如果这不是一个足够好的问题,我很抱歉(因为我自己的解决方案只是工作,所以我实际上没有问题),但这里是。
我的意思是,我是用C语言长大的,后来才学会c++,所以可能我有偏见,但仍然。

在这种特殊情况下,有一个库返回const char*,而另一个库需要void*作为输入。因此,如果我想用第一个库的结果调用第二个库,我需要写

second(const_cast<void*>(static_cast<const void*>(first())));

对吧?这是唯一正确的方法,对吗?

char*可以隐式地转换为void*,因此您的代码可以简化为:

second(const_cast<char*>(first()));

只有当second的定义操作时,其形参的类型为const void*时,

才安全。