c++ - 在 C++ 中,我可以在不修改类的情况下定义到类的隐式转换吗?
问题描述
最近我不得不在我的 C++ 代码中使用一些 C 库。我使用的 C 库定义了一个复数类,如下所示:
typedef struct sfe_complex_s
{
float real;
float img;
} sfe_complex_t;
自然,我不想在 C++ 中使用这种 C 风格的数据结构,所以为了方便起见,我想定义一个从这种类型到std::complex<float>
. 有没有办法这样做?或者我必须明确地进行转换?
解决方案
隐式转换应该意味着什么。它代表了该转换的源类型和目标类型之间的密切关系。其中一个在某种程度上被设计为在某种程度上等同于另一个。
因此,只有与源类型或目标类型密切相关的代码才能定义这种关系。也就是说,如果您无法控制源类型或目标类型,那么 C++ 不会觉得您有资格在它们之间创建隐式转换关系。
第 3 方不能使类型隐式转换。
推荐阅读
- javascript - Phaser 3 - 如何从箭头函数事件中引用对象本身?
- algorithm - 每个顶点具有哈密顿循环所需的最小顶点度数是多少?
- typescript - 打字稿解决皮棉功能
- javascript - 只要鼠标按钮按下,如何在画布上连续向一个方向移动对象?
- api - 从 Net Framework 4.7.2 API 获取没有内容或正文的 500 内部服务器错误
- c# - 如何在创建工具的同时创建工具事件?(C#,Windows 窗体)
- sql - 如何按特定列限制?
- javascript - 从页面上的表单输出数据反应
- css - `html` 和 `html, body` 选择器在渲染结果方面有什么区别吗
- laravel - 删除功能不适用于控制器