2013-07-16 55 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