Как получить XmlRpcValue, используя перегруженную функцию

У меня есть объект 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 печатает правильное значение. Я пробовал несколько перестановок перегруженного оператора (), но все вызывает только другую ошибку компиляции. Как я должен получить значение от этого объекта?

1

Решение

Вы путаете R T::operator ()(S a1, U a2, ...); с T::operator R(); последний — оператор преобразования, первый — оператор вызова функции. В этом случае в XmlRpcValue указаны операторы преобразования — они вызываются неявно в таких случаях, как int val = p["some_value"]; по предложению Игоря

1

Другие решения

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

Это должно работать, так как для XmlRpcValue определен оператор преобразования
оператор int&();

1

По вопросам рекламы [email protected]