У меня есть объект XmlRpcValue и я хочу получить значения из этого объекта. Класс предлагает несколько интерфейсов для получения значений. Но я не уверен, как их использовать. Интерфейс определен в этой минимальной документации (http://xmlrpcpp.sourceforge.net/doc/classXmlRpc_1_1XmlRpcValue.html#_details). Я пытался вызвать перегруженную функцию ()
но я не уверен в правильном синтаксисе вызова этой функции.
Упрощенный код выглядит следующим образом:
XmlRpc::XmlRpcValue p;
cout<<p["some_value"]<<endl;
int val = p["some_value"]();
Ошибка компиляции возникает в строке 3 выше. Оператор cout печатает правильное значение. Я пробовал несколько перестановок перегруженного оператора ()
, но все вызывает только другую ошибку компиляции. Как я должен получить значение от этого объекта?
Вы путаете R T::operator ()(S a1, U a2, ...);
с T::operator R();
последний — оператор преобразования, первый — оператор вызова функции. В этом случае в XmlRpcValue указаны операторы преобразования — они вызываются неявно в таких случаях, как int val = p["some_value"];
по предложению Игоря
if(p.getType() == TypeInt)
int val = p;
Это должно работать, так как для XmlRpcValue определен оператор преобразования
оператор int&();