#include "write-copy.h" #ifdef _TEST_ struct card { int id; card(int _id):id(_id){} }; struct card_list:single_base> { void accept(visitor>&v) { for(std::pair> me:m_map) { v.visit(me.second); } } }; struct visit_log:visitor> { bool visit(std::shared_ptr c) { printf("%d\n",c->id); return true; } }; template<> std::shared_ptr single_base>::m_instance=std::make_shared(); int main() { std::vector> v; for(int i=0;i<100;i++) { card_list::instance()->add(i,std::make_shared(i));//每次生成一个对象 v.push_back(card_list::instance()); } for(int i=0;i<100;i++) { printf("%d %p\n",i,v[i].get()); } visit_log vl; card_list::instance()->accept(vl); return 0; } #endif