看板 OOAD 關於我們 聯絡資訊
iamstudent :其實是因為擔心其他人把那個Data的class拿去用 04/23 20:21
iamstudent :雖然算是多餘的煩惱,不過code放那邊 04/23 20:22
iamstudent :就會多出一個class出來,也許看的人就會以為可以用 04/23 20:22
ok 我了解你的疑慮了XDDDD 不過關於這檔事,你還少考慮了一個點。 如我上面那個範例,State class 別人也可以自己隨便建立阿, 但是只有透過BigClass建立的 State 才能拿到正確的 Data,對吧。 Data也是一樣,Data裡面裝什麼是一回事,誰建立他又是另一回事 !!! 如果我這樣寫 class BigClass { private: Data * data; initData(Data * data) { /*初始化data資源*/ } public: BigClass() { initData(this->data); } }; 只有 BigClass 內部的那個 Data 才能獲得正確的初始化, 其他地方自己建立的 Data,都只是個有名無實的空殼。 這樣算不算管好使用資源的權限了呢? -- Mat's Blog http://chchwy.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.97.225 ※ 編輯: chchwy 來自: 114.45.97.225 (04/23 20:39)
iamstudent :Data的Constructor設為private,然後friend BigClass 04/23 20:49
iamstudent :好像就安全了 04/23 20:49
chchwy :good idea. 04/23 20:49
iamstudent :直接在compiler time以error否決錯誤用法 04/23 20:50
※ 編輯: chchwy 來自: 114.45.97.225 (04/23 21:03)
iamstudent :我在C_and_Cpp有放出解決辦法了,可以看看 04/23 21:42