[問題] 有關存取class的private data member

看板C_and_CPP (C/C++)作者 (邦)時間16年前 (2009/12/16 23:31), 編輯推噓2(2010)
留言12則, 3人參與, 最新討論串1/1
想請問各位板友一個小問題... 請問: 如何在一個class的member function裡存取另一個class的private data member? 譬如說在Matrix這個class裡的函式 如果我傳一個VectorD這個class的object進去 想要存取裡頭的data member 題目要求要用VectorD下已經宣告的inline function 來讓外界access它的data member class VectorD{ public: //為了方便閱讀只貼出有問題的部分 inline double * GetDirectAccess() {return _data;} inline int GetSize() {return _size;} private: int _size; double * _data; }; 我在定義Matrix的member function裡 (Matrix裡也用了一個指標_data來存取一個偽二維矩陣) 但是無論是這樣寫: // get the row vector void Matrix::GetRowVector(int index, VectorD & receiver) { for (int i = 0; i < _cols; i++) receiver.GetDirectAccess[i] = _data[index * _cols + i]; } 還是這樣寫: // get the row vector void Matrix::GetRowVector(int index, VectorD & receiver) { for (int i = 0; i < _cols; i++) *(receiver.GetDirectAccess + i) = _data[index * _cols + i]; } 都會出錯 我不曉得問題在哪裡... 它回傳的不是一個指標嗎? 為什麼不讓我存取呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.35.1.66

12/16 23:35, , 1F
請透過public method, 不然就是用friend....@_@"
12/16 23:35, 1F

12/16 23:36, , 2F
你沒有存取什麼 private member 吧,重點是method call
12/16 23:36, 2F

12/16 23:36, , 3F
請加括號
12/16 23:36, 3F

12/16 23:37, , 4F
即是: receiver.GetBlablabla()[i]
12/16 23:37, 4F

12/16 23:41, , 5F
謝謝兩位板大的回答 加括號真的就可以了!!
12/16 23:41, 5F

12/16 23:43, , 6F
題目是給header file要用現有的東西 不然我也想用friend
12/16 23:43, 6F

12/16 23:48, , 7F
嗚~~跟著被虎弄到了, 還是a大眼睛比較利....Orz
12/16 23:48, 7F

12/16 23:50, , 8F
不好意思 小聲問一下method call是甚麼?
12/16 23:50, 8F

12/16 23:51, , 9F
意思是我不傳東西進去的函式還是要寫()只是()內不擺東西?
12/16 23:51, 9F

12/16 23:52, , 10F
簡單的說就是class的member function吧....@_@"
12/16 23:52, 10F

12/16 23:52, , 11F
對....Orz
12/16 23:52, 11F

12/16 23:54, , 12F
我懂了 謝謝樓上!
12/16 23:54, 12F
文章代碼(AID): #1BAFrLqk (C_and_CPP)
文章代碼(AID): #1BAFrLqk (C_and_CPP)