Jes*_*son 2 c++ mfc memory-management
在MSVC2005中,以下代码无法为我编译:
std::vector<CMenu> vec(10);
CMenu是一个MFC菜单对象(如上下文菜单).通过一些测试,我了解到CMenu没有公共拷贝构造函数.
为了做我想做的事,我需要使用动态数组.
CMenu* menus = new CMenu[10];
// ...
delete [] menus;
当然,现在我已经失去了使用STL容器的所有好处.
我还有其他选择吗?
您可以使用指针容器或智能指针容器,例如使用shared_ptrBoost或TR1:
std::vector<shared_ptr<CMenu> > vec;
vec.push_back(make_shared<CMenu>());