Re: [問題] const Reference的問題

看板C_and_CPP (C/C++)作者 (迅雷不及掩耳盜鈴)時間16年前 (2010/05/15 02:14), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
有趣的問題 現在以下有兩個狀況 (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
文章代碼(AID): #1BxPBxbi (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BxPBxbi (C_and_CPP)