无法在 CLI C++维护指针集合
Can't maintain collection of pointers in C++ CLI
我有一个令人沮丧的问题,我不确定究竟如何表达或我做错了什么。
我试图维护一个由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相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 指针无法在 C++ 函数中维护
- 为渲染对象的所有实例维护一个指向共享纹理/资源的指针/引用的最佳方式
- 如何在c++中维护映射指针的向量
- 无法在 CLI C++维护指针集合
- 试着理解由字符串对象维护的指针