看板 C_and_CPP 關於我們 聯絡資訊
優先採取方案一 class B:public A {} ; 不適合的話改成方案二 class B { private: A a ; public: } ; 建立兩個專案 第一個是純遊戲 只會用到A 第二個是編輯器 會用到B ※ 引述《azureblaze (AzureBlaze)》之銘言: : 我有兩個class A和B。 : 他們做的事差不多,只在某些細節上不一樣 : 大部分的地方都可以透過拉出一個共同的base class : 再繼承來解決。 : 不過有些地方可能長這樣 : A::doSomething(){ B::doSomething(){ : BaseMethod1(); BaseMethod1(); : BaseMethod2(); : B_Specific_Operations(); : A_Specific_Operations(); : BaseMethod2(); : BaseMethod3(); BaseMethod3(); : } } : 在我的用途中,A是遊戲 B是遊戲編輯器 : 他們底下跑的東西都差不多,可是遊戲編輯器在某些地方 : 可能要插入特別的ui處理code,關閉或開啟某些功能,或是 : 使用不同的初始值。 : 我目前處理的方法是全部寫在一起然後用macro產生兩個執行檔 : 不過我現在希望能將相同的部份弄成dll然後A和B都連結他 : 目前想到的一個解決方法是把AB不同的地方都在Base做 : 一個virtual method,然後AB其中一邊就留白 : 不過差異的地方很細碎,這麼做最後會把整個流程打得很散 : 同時開發還在相當不穩定的狀態,這樣每次要插入新的code的 : 時候都很麻煩。 : 另一個方法是直接用if分開AB : 不過遊戲一定只用A,編輯器一定只用B,實在不想在runtime : 還要付出判斷的成本 : 目前看起來還是原先的純macro方法最乾淨 : 還是說反正硬碟空間不值錢build成兩個獨立的exe就好了? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.216.197