以下代码无法在MSVC2005中为我编译:
std::vector<CMenu> vec(10);
CMenu
是MFC菜单对象(例如上下文菜单)。通过一些测试,我了解到CMenu
没有公共(public)副本构造函数。要执行我想做的事情,我需要使用动态数组。
CMenu* menus = new CMenu[10];
// ...
delete [] menus;
当然,现在我已经失去了使用STL容器的所有好处。
我还有其他选择吗?
最佳答案
您可以使用pointer containers或智能指针容器,例如使用Boost或TR1中的 shared_ptr
:
std::vector<shared_ptr<CMenu> > vec;
vec.push_back(make_shared<CMenu>());