在 C++ 中是否可以定义不是类成员的转换运算符?我知道如何对常规运算符(例如 +)执行此操作,但不适用于转换运算符。
这是我的用例:我使用一个 C 库,它给我一个PA_Unichar *
,其中库将 PA_Unichar 定义为 16 位 int。它实际上是一个以 UTF-16 编码的字符串。我想将其转换为std::string
UTF-8 编码。我已经准备好所有的转换代码并且可以工作了,我只是缺少可以让我编写的语法糖:
PA_Unichar *libOutput = theLibraryFunction();
std::string myString = libOutput;
(通常在没有临时变量的一行中)。
另外值得注意的是:
我知道这
std::string
没有定义隐式转换char*
,我知道为什么。相同的原因可能适用于此,但这无关紧要。我确实有一个
ustring
, 的子类,std::string
它定义了正确的转换运算符 fromPA_Unichar*
。它可以工作,但这意味着使用ustring
变量而不是std::string
当我将这些字符串与其他库一起使用时需要转换。std::string
所以这没有多大帮助。使用赋值运算符不起作用,因为它们必须是类成员。
那么是否可以在您无法控制的两种类型(在我的情况下为PA_Unichar*
和std::string
)之间定义隐式转换运算符,它们可能是也可能不是类类型?
如果不是什么可能是解决方法?