首页 > 解决方案 > 在 C++ 中,我可以在不修改类的情况下定义到类的隐式转换吗?

问题描述

最近我不得不在我的 C++ 代码中使用一些 C 库。我使用的 C 库定义了一个复数类,如下所示:

typedef struct sfe_complex_s
{
    float real;
    float img;
} sfe_complex_t;

自然,我不想在 C++ 中使用这种 C 风格的数据结构,所以为了方便起见,我想定义一个从这种类型到std::complex<float>. 有没有办法这样做?或者我必须明确地进行转换?

标签: c++

解决方案


隐式转换应该意味着什么。它代表了该转换的源类型和目标类型之间的密切关系。其中一个在某种程度上被设计为在某种程度上等同于另一个。

因此,只有与源类型或目标类型密切相关的代码才能定义这种关系。也就是说,如果您无法控制源类型或目标类型,那么 C++ 不会觉得您有资格在它们之间创建隐式转换关系。

第 3 方不能使类型隐式转换。


推荐阅读