gpt4 book ai didi

c++ - 是否可以在 C++ 中编写自定义转换运算符(如 `static_cast` )?

转载 作者:太空狗 更新时间:2023-10-29 19:48:05 26 4
gpt4 key购买 nike

我有了这个想法并尝试编写一个 string_cast 转换运算符来在 C++ 字符串之间进行转换。

template <class OutputCharType>
class string_cast
{
public:
template <class InputCharType>
operator std::basic_string<OutputCharType>(const std::basic_string<InputCharType> & InputString)
{
std::basic_string<OutputCharType> OutputString;
const std::basic_string<InputCharType>::size_type LENGTH = InputString.length();
OutputString.resize(LENGTH);
for (std::basic_string<OutputCharType>::size_type i=0; i<LENGTH; i++)
{
OutputString[i] = static_cast<OutputCharType>(OutputString[i]);
}
return OutputString;
}
};

我试过这样使用它:

std::string AString("Hello world!");
std::cout << AString << std::endl;
std::wcout << string_cast<wchar_t>(AString) << std::endl; // ERROR

错误信息是:

Error   C2440   '<function-style-cast>': cannot convert from
'const std::string' to 'string_cast<wchar_t>'

这在 C++ 中是不可能的,还是我的代码中遗漏了什么?

最佳答案

您可以编写带有签名的免费函数:

template <typename OutputCharType, typename InputCharType>
std::basic_string<OutputCharType>
string_cast(const std::basic_string<InputCharType>& InputString)

关于c++ - 是否可以在 C++ 中编写自定义转换运算符(如 `static_cast` )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com