C++自定义基本类型之间的转换
C++ custom conversion between basic types
是否可以在C++中提供基本类型之间的自定义隐式转换?
具体来说,我有一个Xerces-c库,它有:
using XMLCh = unsigned short int;
但是,当然没有办法提供一个文本字符串作为unsigned short int
。所以我想要一些像:
operator unsigned short int*(char16_t* s) { return reinterpret_cast<unsigned short int*>(s); }
operator char16_t*(unsigned short int* s) { return reinterpret_cast<char16_t*>(s); }
这会让你说:
XMLCh *str = u"Hello, world.";
和:
DOMElement* pEl = ...;
std::u16string str = pEl->getNodeName();
等等。目前,我将不得不将每个Xerces调用封装在一个转换函数中——丑陋!
只能为class
es和struct
s定义自定义转换运算符。不能为内置类型定义它们。
此外,自定义转换运算符不能是非成员函数。这限制了可以在哪里定义它们以及可以为哪些对象类型定义它们。
相关文章:
- 在 Rcpp 中的字符串类型之间转换时出错
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- 在不同类型之间转换常量指针
- 在 3D 骨架系统 DirectX 之间转换
- C++ 如何将用户控件添加到窗体,以便我可以在面板之间转换
- 在 std::u8string 和 std::string 之间转换
- 如何在Unicode/UCS CodePoint和UTF16替代对之间转换
- 在DXGI格式之间转换RGBA数据
- 在两个不动点表达之间转换
- 在函数指针类型之间转换
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- 如何在C 中的不同类之间转换
- 一个关于C++中double和int之间转换的奇怪结果
- 模板类在模板类型之间转换,但也专门化
- 是否有Visual c++编译器在线,以及如何在c++和vs简单代码之间转换
- c/在Unix时间和"Gregorian time"之间转换
- 无法使用iconv在编码之间转换
- 在std::string和std::wstring之间转换的多平台方式
- 我真的应该每次在基元类型之间转换时都使用static_cast吗
- 使用Boost::units在两个量之间转换的最简单方法