Re: [問題] const Reference的問題
有趣的問題
現在以下有兩個狀況
(1)
ClassA a;
a.GetB().SetVar(1);
(2)
ClassA a;
ClassB b;
b.SetVar(1);
a.GetB() = b;
以你的例子兩個狀況的結果是完全一樣的, a.GetB() = b 僅僅是做了
Copy Assignment.
所以說如果GetB()回傳一個ClassB* ?
使用者可以做一樣的事, 對吧?
(*(a.GetB())) = ClassB();
回到原點, 在物件裡傳回一個指標或參考指向member vairable前請再三考慮
※ 引述《mongsq (孟)》之銘言:
: 假設我有一個ClassA和ClassB
: class ClassA
: {
: private:
: ClassB _b;
: public:
: ClassB& GetB();
: }
: class ClassB
: {
: private:
: int _var;
: public:
: void SetVar(int var) { _var = var };
: }
: 我想從ClassA取得ClassB的參考
: ClassB& b = a.GetB();
: 但我不想讓外部改變a的_b
: 如b=anotherB; 這樣會導致a的_b被修改掉
: 我是想讓外部只透過b.SetVar來改變b的內部成員
: 如果我把GetB的回傳值設成const 那會導致b.SetVar不能呼叫
: 如果不設成const 又會導致a._b有可能被取代掉
: 請問要如何才能達成我要的要求呢? 還是只能使用指標了嗎?
: 謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.147.174
推
05/15 02:18, , 1F
05/15 02:18, 1F
→
05/15 02:33, , 2F
05/15 02:33, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章