C++ 如何使用重载函数获取XmlRpcValue

C++ 如何使用重载函数获取XmlRpcValue,c++,xml-rpc,ros,xmlrpcclient,C++,Xml Rpc,Ros,Xmlrpcclient,我有一个XmlRpcValue对象,希望从该对象获取值。该类提供了一些接口来获取值。但我不知道如何使用它们。接口在本文档()中定义。我尝试调用重载函数(),但我不确定调用此函数的语法是否正确 简化代码如下: XmlRpc::XmlRpcValue p; cout<<p["some_value"]<<endl; int val = p["some_value"](); XmlRpc::XmlRpc值p; cout您混淆了rt::operator()(sa1,ua2,…)-

我有一个XmlRpcValue对象,希望从该对象获取值。该类提供了一些接口来获取值。但我不知道如何使用它们。接口在本文档()中定义。我尝试调用重载函数
()
,但我不确定调用此函数的语法是否正确

简化代码如下:

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

cout您混淆了
rt::operator()(sa1,ua2,…)T::运算符R()的code>-后者是转换运算符-前者是函数调用运算符。在本例中,XmlRpcValue指定了转换运算符-在
int val=p[“some_value”]等情况下隐式调用这些运算符根据Igor的建议

if(p.getType() ==  TypeInt)
    int val = p;
这应该可以工作,因为有为XmlRpcValue定义的转换运算符
运算符int&()

查看文档,只需简单地
intval=p[“some_value”]应该有效。谢谢!我的类型是uint32\u t,而不是本机类型int,因此没有匹配的重载函数。但是我把它改成了int,现在它可以工作了。谢谢你的解释。我的类型是uint32\u t,而不是本机类型int,因此没有匹配的重载函数,因此出现了错误。但是我把它改成int,现在它可以工作了。