看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《adxis (acer)》之銘言: : // 完整(修正) : #include <vector> : #include "loki/Singleton.h" : #include "loki/SmartPtr.h" : class Obj{ : friend struct Loki::CreateUsingNew< Obj>; : friend struct Loki::DefaultSPStorage <Obj>; : private: : std::vector< Loki::SmartPtr<Obj> > innerCont; : Obj(){} : ~Obj(){} 這邊很重要 一個 singleton 應該是讓 SingletonHolder去管理 destruction 所以第二個 friend 就跟這個原則衝突了 : public: : void Add(){ : Loki::SmartPtr<Obj> sp = new Obj; : innerCont.push_back(sp); : } : }; : typedef Loki::SingletonHolder< Obj > SingletonObj; : int main() : { : SingletonObj::Instance().Add(); : return 0; : } 如果硬是要讓這個 class 可以用 我目前只知道在 ~Obj(){ } 裡面直接離開程式 會這樣用也是因為我實際需求上他也是最後一個解構的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.101.186
adxis:其實只要不用SmartPtr就可以了 耍蠢阿 0rz 07/06 02:54