2013-07-16 24 views
1

我有一个XmlRpcValue对象并希望从该对象获取值获得XmlRpcValue。该类提供了一些接口来获取值。但我不确定如何使用它们。界面在此最小文档中定义(http://xmlrpcpp.sourceforge.net/doc/classXmlRpc_1_1XmlRpcValue.html#_details)。我试着调用重载函数(),但我不确定调用这个函数的正确语法。如何使用重载函数

简化代码如下:在上述第3行出现

XmlRpc::XmlRpcValue p; 
cout<<p["some_value"]<<endl; 
int val = p["some_value"](); 

的编译错误。 cout语句打印适当的值。我已经尝试了重载运算符()的几个排列组合,但所有内容都只会导致不同的编译错误。我应该如何从这个对象中获得价值?

+2

综观文档,只是简单'INT VAL = P [ “SOME_VALUE”];'应该工作。 –

+0

谢谢!我的类型是uint32_t,而不是本地类型int,因此没有匹配的重载函数。但我将它改为int,现在它可以工作。 – Ashok

回答

1

你很困惑R T::operator()(S a1, U a2, ...);T::operator R(); - 后者是转换操作符 - 前者是函数调用操作符。在这种情况下XmlRpcValue有指定的转换运营商 - 这些隐式调用像int val = p["some_value"];箱子由伊戈尔

+0

感谢您的解释。我的类型是uint32_t,而不是本地类型int,因此没有匹配的重载函数,因此错误。但我将它改为int,现在它可以工作。 – Ashok

1
if(p.getType() == TypeInt) 
    int val = p; 

这应该工作,因为是XmlRpcValue 操作INT &()定义的转换操作建议;