自由函数中的类型转换
Type conversion in free functions
使用像jsoncpp
这样的库来序列化我的C++对象和数据(例如,在Python中绘制它们(,我真的厌倦了代码中的所有循环将std::vector< double >
转换为Json::Value
s。我最终一次又一次地重新输入相同的行。因此,我想让这件事变得更容易一些。
我有两个用例:将STL
类型(至少std::vector
,std::map
(从Json::Value
转换为,并使用我自己的数据类型执行此操作。
针对自己的数据类型的解决方案:
- 定义期望
const Json::Value&
的构造函数,然后构造函数尝试用数据填充对象,或者在传递的值不符合特定要求时抛出异常 - 将
operator Json::Value()
定义为我的类的成员函数。
这样,我应该能够写这样的东西:
MyObj o;
Json::Value root;
root["foo"] = o;
MyObj reconstructed(root["foo"]);
但是我应该如何处理STL
类型呢?编写显式函数,也许是模板,或者我应该像对自己的数据类型一样做同样的事情,除了我使用自由函数而不是成员函数?最佳实践是什么?
您可以使用for_each编写单个函数来执行此操作。
如果你想支持嵌套容器(向量中的向量等(,那么你需要包装函数并递归调用该函数,直到输入类型允许直接转换为 Json::Value。
相关文章:
- C++:用户定义的显式类型转换函数错误
- 为什么转换函数声明不需要至少一个定义类型说明符
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 如何在参数中定义隐式类型转换的构造函数?
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 从 cpp lib 调用函数时的数据类型转换
- 如何为具有常量类型的函数正确转换来自 DLsym 的返回值?
- 指向类成员函数的指针中存在类型转换错误
- C++ 函数重载不明确,没有自动类型转换
- 为什么用户定义的转换函数模板不能有推导的返回类型?
- 具有重载类型转换运算符的函数对象崩溃
- 将函数指针类型转换为相应的字符串
- 类型转换运算符重载与 as 非成员函数
- 错误 c++ 在令牌之前'('预期的构造函数、析构函数或类型转换
- 错误:在“(”标记之前进行预期的构造函数、析构函数或类型转换.即使我有一个构造函数
- 使用模板和部分专用化生成类型转换函数
- 重载 C++ 类型转换(函数)