说我有一个类如下的课程:
public ref class MyClass {};
我想拥有这样一个类的对象向量:
cliext::vector<MyClass ^> ^myVector;
据我所知,这是引用类型的句柄向量,不是吗?我的意思是,这不是引用类型的向量,因此我不需要定义任何这些要求:
Requirements for STL/CLR Container Elements
在我定义cliext::vector<MyClass> ^myVector
的情况下,这些要求是必要的,因为每个元素的副本都会存储在容器中,等等等等。
这一切都正确吗?因为当我从向量中检索元素时,我得到NullReferenceException
。我可以看到对象是正确构造的,但是当我从向量中找回它时,它的所有成员都是未定义的。
答案 0 :(得分:2)
STL / CLR库在最初承诺的发货日期后三年非常交付。很明显,每个人为什么会将原生C ++容器类的所有缺点与托管内存管理的缺点结合起来。没有上升空间,图书馆没有单一的兑换价值。它与C ++类的兼容性只是一种责任,阻止你做正确的事情。查看this page恐怖故事。
不要投入任何时间来完成这项工作,这是完全浪费的努力。使用System :: Collections :: Generic命名空间中的类。