2014-09-21 50 views
0

比如這個班。有沒有可能讓非會員功能執行好友功能的任務?一個非成員函數如何實現一個類的朋友函數呢?

class Accumulator 
{ 
    private: 
     int m_nValue; 
    public: 
     Accumulator() { m_nValue = 0; } 
     void Add(int nValue) { m_nValue += nValue; } 

     // Make the Reset() function a friend of this class 
     friend void Reset(Accumulator &cAccumulator); 
}; 

// Reset() is now a friend of the Accumulator class 
void Reset(Accumulator &cAccumulator) 
{ 
    // And can access the private data of Accumulator objects 
    cAccumulator.m_nValue = 0; 
} 
+5

朋友被定義爲非會員... – 2014-09-21 03:25:38

+0

私人的想法是,非會員非朋友無法訪問它。 – Dani 2014-09-21 03:33:13

回答

1

非會員非朋友功能無法訪問或修改私人數據成員。是否有一個原因,你不想提供一個成員函數的void Reset(){m_nValue = 0;}到類的公共接口?

4

哦,我的,這聽起來像是作業:一個人爲的問題,回答你必須知道,以提出問題。

首先,請注意,friend函數是非成員函數,因爲它不是’不是成員。

反正

void Reset(Accumulator& a) 
{ 
    a = Accumulator(); 
} 
0

如果你的意思是訪問類的私有成員,是無法做到的。如果你想有一個非成員非友元函數做同樣的事情Reset不會在這種特殊情況下,這應該工作:

void notFriendReset(Accmulator& acc) 
{ 
    acc = Accmulator(); 
} 
相關問題