2013-07-16 2 views
1

У меня есть объект XmlRpcValue и вы хотите получить значения от этого объекта. Класс предлагает некоторые интерфейсы для получения значений. Но я не уверен, как их использовать. Интерфейс определен в этой минимальной документации (http://xmlrpcpp.sourceforge.net/doc/classXmlRpc_1_1XmlRpcValue.html#_details). Я попытался вызвать перегруженную функцию (), но я не уверен в правильном синтаксисе вызова этой функции.Как получить XmlRpcValue с использованием перегруженной функции

упрощенный код выглядит следующим образом: возникает

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

Ошибка компиляции в строке 3 выше. Оператор 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 оператора междунара &();