2013-07-16 56 views
3

我希望爲它擁有一個函數。最好的辦法是什麼? 其實我有一個場景需要double值和指向double值的指針,以創建另一個XML數據消息。返回地址和值的函數

double* TransportMessage::getSize_Ptr() 
{ 
    // double m_quotesize; is data member of the class 
    return &m_quotesize; 
} 

double TransportMessage::getSize() 
{ 
    // double m_quotesize; is data member of the class 
    return m_quotesize; 
} 

基本上我正在尋找的是,只是返回一個值,如果需要的話從中取出地址。我知道反向是可能的,而且非常簡單,目前我只用這種方式。

我知道的一個事實,即我們不能做 double l_dQuote = &getSize(); 所以請不要抓我這個.. :)

+6

爲什麼不總是返回一個指針,然後你可以通過指針獲取值? – trojanfoe

+4

不要這樣做。不要試圖返回'double *'和'double *'指向的'double'值。不要。 –

+2

我看到沒有必要返回一個值和它的地址;你得到的地址意味着通過解除引用你有價值。 – lulyon

回答

12

你爲什麼不只是返回一個參考?然後,你可以讀取和改變類的狀態(儘管這會給你的未來維護者帶來一些痛苦 - 一個類應該負責維護自己的狀態,而不是讓世界其他地方訪問它)。

double& TransportMessage::get_size_ref() 
{ 
    // double m_quotesize; is data member of the class 
    return m_quotesize; 
} 
+1

+1看起來更安心。 – 2013-07-16 14:40:28

+2

與使'm_quotesize'公開相同的結果。 – user1810087

+1

@itwasntpete差不多,但不是真的。有一個包裝讓你在部分控制 - 你可以例如返回一個引用到其他東西或拋出一個異常,如果有必要。 – Angew