我可以在STL容器中使用MFC对象吗?

Jes*_*son 2 c++ mfc memory-management

在MSVC2005中,以下代码无法为我编译:

std::vector<CMenu> vec(10);
Run Code Online (Sandbox Code Playgroud)

CMenu是一个MFC菜单对象(如上下文菜单).通过一些测试,我了解到CMenu没有公共拷贝构造函数.

为了做我想做的事,我需要使用动态数组.

CMenu* menus = new CMenu[10];
// ...
delete [] menus;
Run Code Online (Sandbox Code Playgroud)

当然,现在我已经失去了使用STL容器的所有好处.

我还有其他选择吗?

Geo*_*che 6

您可以使用指针容器或智能指针容器,例如使用shared_ptrBoost或TR1:

std::vector<shared_ptr<CMenu> > vec;
vec.push_back(make_shared<CMenu>());
Run Code Online (Sandbox Code Playgroud)