看板 EE_DSnP 關於我們 聯絡資訊
這個是從上一篇中的 reference 稍稍改過的 code compile 和執行都會過 主要不一樣的地方在 S* alloc(size_t t){ return NULL; } 直接 return NULL是為了讓它 compile 過... 所以如果有其他問題的話,比較有可能是這邊出了毛病... ========================================= #include <iostream> using namespace std; template<class S> class MemMgr; template<class S> class MemRecycleList{}; template<class T> class HisNode { void* operator new[](size_t t) {return (void*)(_memMgr->alloc(t));} static MemMgr< HisNode<T> >* _memMgr; }; template<class S> class MemMgr { public: MemMgr(){_recycleList = new MemRecycleList<S>[32];} S* alloc(size_t t){ return NULL; } private: MemRecycleList<S>* _recycleList; }; template<class T> MemMgr< HisNode<T> >* HisNode<T>::_memMgr = new MemMgr< HisNode<T> >; int main(){ HisNode<int> a; HisNode<int> *b = new HisNode<int>; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.243.251 ※ 編輯: herbert570 來自: 140.112.243.251 (12/13 00:10)
dryman:我把recycle list那行comment掉是可以正常運作的@ @ 12/13 00:21
herbert570:不過其實 recycleList 應該不用用到 Mgr class 啦... 12/14 01:36
herbert570:簡單的 type cast 成 pointer 的 linklist 應該就可以 12/14 01:37
herbert570:work 了! 12/14 01:37
herbert570:或者是 HisNode 用原本 node class 的 pointer 來實作 12/14 01:38