解决从库到C ++主题的编组数据类型的智能方法

时间:2016-06-02 00:36:10

标签: c++ marshalling unmarshalling

我正在使用具有自己数据类型的库(无权访问源),例如: library :: object :: library_string,library :: object :: library_number。有一个枚举存储在类型旁边,告诉你类型(即library :: object :: type)

库提供了库::对象上的方法,如isString(),isNumber()来查询类型。该库还提供了getString(),getNumber(),如果在错误的类型上调用它们,则抛出异常。

我正在使用我的应用程序中的库,我想用尽可能少的繁琐代码填充我的C ++原语。一个问题是因为library :: object可能是null或意外类型,我应该使用isXXXX()检查类型,然后使用getXXXX()来填充我的C ++模型。

要防止像myModel.myPrimativeVariable = isXXXX()这样的大量代码? getXXXX(): null_condition_type_for_this_type,如“”或0

实现这一目标最好的是什么?遗憾的是,库没有提供tryGetValue()方法。

我可以写出一堆各种类型的函数(不同的签名),所以我可以这样做:

myModel-> myInt = getIntValue(objectInstance) myModel-> myString = getStringValue(objectInstance)

其中objectInstance是一个库::对象实例

或者我可以使用模板并且有一个函数试图将类型转换为模板类型。

我之前遇到过这个'问题'并且通常选择写包装器,但它感觉很幼稚。我觉得这一定是一个“解决”的问题。我觉得有更好的方法吗?

由于

0 个答案:

没有答案