2013-07-16 28 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 &()定義的轉換操作建議;