作者BVB (BVB)
看板EE_DSnP
標題Re: [注意] 物件導向程式的基本意義
時間Wed May 21 11:57:55 2008
我也有iterator這個class看不到_dummy的問題
依據老師的說明
要抓到_dummy一定要讓iterator看到啟動他的BSTree物件
我想到的是讓iterator的constructor吃一個指標BSTree<T>*
然後在任何時候要宣告一個BSTree<T>::iterator的物件
都必須要把this丟到他的constructor裡面...
我想這樣應該是可以解決
可是這樣的話感覺很鳥...
不知道有沒有方法讓iterator的constructor看到呼叫他的是哪顆BSTree?
(而不是BSTree從外面告訴iterator)
另外我想不通為什麼要在一個class裡宣告另一個class...
就我看到的情況
在class裡面的class也不會比外面的class有多少特權...
也同樣不能去access別人的private data member
也不能使用別人的data member (還是要透過物件)
那我把iterator宣告在外面不是也完全一樣嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.174.136
1F:→ BVB:不行這樣也不能解決...adtTest.h裡面的iterator沒有這樣宣告.. 05/21 12:01
2F:推 ric2k1:我之前看過有人是這樣做的: (1) 在求 begin(), end() 時將 05/21 12:40
3F:→ ric2k1:(BSTree*)this 傳給 iterator, (2) 在iterator::operator = 05/21 12:41
4F:→ ric2k1:中確定 BSTree* 有被 copy 過去, (3) iterator 的 05/21 12:41
5F:→ ric2k1:constructor 多傳 BSTree* 進去. 05/21 12:42
6F:推 ric2k1:以上的作法的挑戰是你不應該去更改 adtTest.h. 不過如果你 05/21 12:42
7F:→ ric2k1:想通了的話也是蠻合理的... 05/21 12:43
8F:→ BVB:終於解決了... 05/21 15:23