gpt4 book ai didi

c# - 无法在 C++ CLI 中维护指针集合

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:16 26 4
gpt4 key购买 nike

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

我正在尝试维护由 boost shared_pointers 引用的复杂结构的集合。这些结构是由常规 C++ 模块创建的。我想用某种现有的容器类来做到这一点。所以 Dictionary(本来不错....)和 array 和 List 都出局了,因为它们无法处理非托管结构。这留下了类似 vector 的东西,但我似乎无法让它在 C++ CLI 中工作。 (我可以找到它,但是 vector 在构建过程中提示一些更进一步的东西。

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

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

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

因为是抽象类,vector处理不了。我想自动调整大小需要访问我可能没有的构造函数/析构函数/拷贝。天下没有免费的午餐。

这样的事情更糟:

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

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

最佳答案

Boost Pointer Container 可能适用于您的情况。

对于指针 vector :

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

关于c# - 无法在 C++ CLI 中维护指针集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com