以下代码无法在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>());

09-04 02:19