无法在 CLI C++维护指针集合

Can't maintain collection of pointers in C++ CLI

本文关键字:维护 指针 集合 C++ CLI      更新时间:2023-10-16

我有一个令人沮丧的问题,我不确定究竟如何表达或我做错了什么。

我试图维护一个由boost shared_pointer引用的复杂结构的集合。这些结构是由一个普通的c++模块创建的。我想这样做与某种现有的容器类。所以Dictionary(本来会很好....)、array和List都退出了,因为它们不能处理非托管结构。这就剩下了向量之类的东西,但我似乎无法在c++ CLI中使用它。(我可以找到它,但是矢量在构建过程中抱怨一些进一步的东西。

我只是想知道其他人是怎么做的。增强列表是更好的选择吗?理想情况下,我希望将字符串名称与结构相关联,并且我希望避免任何内存管理,但简单的解决方案是避免我。

好了,我想我知道问题是什么了。这行不通:

vector<boost::shared_ptr<QuantLib::YieldTermStructure>> Curves;

因为它是一个抽象类,vector不能处理它。我猜自动大小需要访问构造函数/析构函数/副本,我可能没有。天下没有免费的午餐。

这样的东西更糟:

Dictionary<String^, boost::shared_ptr<QuantLib::YieldTermStructure> >^ dictCurves;

因为托管句柄不能处理指针。我愿意承认我可能对某些事情有错误的想法。如果结构如此脆弱,那么我要么需要深入研究如何复制/复制它们,要么需要更精细的处理机制(链表或其他)。[

Boost指针容器有可能在你的情况下工作。

对于指针向量:

boost::ptr_vector<QuantLib::YieldTermStructure>;

对于指针的关联容器(在本例中键是字符串):

boost::ptr_multimap<std::string, QuantLib::YieldTermStructure>

容器在插入对象时获得对象的所有权,因此不需要手动删除对象。

http://www.boost.org/doc/libs/1_57_0/libs/ptr_container/doc/tutorial.html