Re: [問題] 子類別如何共用父類別成員變數
看板C_and_CPP (C/C++)作者newdominic (Daily Game)時間16年前 (2010/06/23 01:26)推噓3(3推 0噓 5→)留言8則, 2人參與討論串2/3 (看更多)
→
06/22 23:16,
06/22 23:16
→
06/22 23:16,
06/22 23:16
→
06/22 23:17,
06/22 23:17
→
06/22 23:17,
06/22 23:17
→
06/22 23:18,
06/22 23:18
→
06/22 23:19,
06/22 23:19
→
06/22 23:20,
06/22 23:20
→
06/22 23:20,
06/22 23:20
→
06/22 23:24,
06/22 23:24
→
06/22 23:24,
06/22 23:24
→
06/22 23:24,
06/22 23:24
→
06/22 23:28,
06/22 23:28
→
06/22 23:28,
06/22 23:28
→
06/22 23:28,
06/22 23:28
→
06/22 23:29,
06/22 23:29
→
06/22 23:30,
06/22 23:30
→
06/22 23:30,
06/22 23:30
推
06/22 23:44,
06/22 23:44
感謝t大的回覆
但我也不是很瞭解t大的意思|||
抱歉,我似乎把問題簡化過頭了
我目前在做一個牌類遊戲
遊戲的主體是一個牌桌類別 (class Table)
主要運作的函式為 Update() 與 Render()
遊戲的過程分成七種狀態
最初的寫法是用 switch 判斷狀態,再去呼叫對應的函式
但函式一多以後 Table 類別就變得難以整理
所以想嘗試把每個狀態寫成一個類別
這樣每次進入 Table::Update() 和 Table::Render() 時
就呼叫目前狀態的 Update() 與 Render()
於是在將狀態獨立成單一類別的時候
我把該狀態原先在 Table 裡面要操作的 data members 移到狀態類別裡
但在這七個狀態中,又有有 3 、 2 、 2 三組子狀態的 Render() 是做一樣的事情
所以我就把重複的部分再向上提,形成如下的繼承樹
(L1) (L2) (L3)
┌StateA1
┌StateA┼StateA2
│ └StateA3
│
│ ┌StateB1
State┼StateB┴StateB2
│
│ ┌StateC1
└StateC┴StateC2
Update() 時使用 L3 類別提供的定義
Render() 時使用 L2 類別提供的定義
這樣在 L2 的類別成員用 static 宣告可行
但滿滿的 static 變數讓我有點怕(心理作用?)
所以想知道是否有除此之外的解法
=====
另外,t大在推文中提到的 context class ,不曉得是不是指文中的 Table 類別?
我有想過在 L1 的 State 類別宣告一個 Table *
在 Table 建構 L3 的狀態物件時,把 this 做為建構參數傳給它
這樣全部的狀態類別就不需要擁有 data members
但在用 Table * 操作的時候會呼叫大量的 setter/getter,讓我難以取捨
這部分不知道我有沒有會錯意?
小弟入門 OO 的時間很短
不曉得哪種寫法從 OO 的角度來看是比較好的,或是有其他更好的方法?
在此先謝謝所有回文的前輩!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.204.43
※ 編輯: newdominic 來自: 118.167.204.43 (06/23 01:43)
※ 編輯: newdominic 來自: 118.167.204.43 (06/23 01:45)
推
06/23 08:05, , 1F
06/23 08:05, 1F
→
06/23 08:05, , 2F
06/23 08:05, 2F
→
06/23 08:06, , 3F
06/23 08:06, 3F
推
06/23 13:24, , 4F
06/23 13:24, 4F
→
06/23 13:24, , 5F
06/23 13:24, 5F
推
06/23 13:27, , 6F
06/23 13:27, 6F
→
06/23 13:28, , 7F
06/23 13:28, 7F
→
06/23 13:28, , 8F
06/23 13:28, 8F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章