2011-03-07 57 views
1

说我有一个像类以下内容:要求/ CLR容器元素

public ref class MyClass {}; 

我想有这样一类的物体的向量:

cliext::vector<MyClass ^> ^myVector; 

我明白这是一个引用类型句柄的向量,不是吗?我的意思是,这是不是引用类型的载体,所以我不需要定义任何的这些要求:

Requirements for STL/CLR Container Elements

这些要求,有必要的情况下,我定义cliext::vector<MyClass> ^myVector,因为那时候的副本每个元素将被存储在容器中,并等等。

是这样吗?因为当我从矢量中检索一个元素时,我得到了一个NullReferenceException。我可以看到这个对象是正确构造的,但是当我从载体中获取它的所有成员时,它们都是未定义的。

回答

2

的STL/CLR库交付非常末,原来承诺的发货日期后三年。很明显,为什么它将原生C++容器类的所有缺点与管理内存管理的缺点相结合。没有好处,图书馆没有单一的赎回价值。它与C++类的兼容性只是一种负担,妨碍了你做正确的事情。回顾this page的恐怖故事。

不要投入任何时间来完成这项工作,这完全是浪费精力。使用System :: Collections :: Generic命名空间中的类。

+0

那怎么样。我的代码现在看起来更好用列表。非常感谢您的提示! – 2011-03-08 08:48:09