Требования к элементам контейнера STL / CLR - PullRequest
1 голос
/ 07 марта 2011

Скажем, у меня есть класс, подобный следующему:

public ref class MyClass {};

Я бы хотел иметь вектор объектов такого класса:

cliext::vector<MyClass ^> ^myVector;

Я понимаю, что это вектор дескрипторов ссылочных типов, не так ли? Я имею в виду, что это не вектор ссылочных типов, поэтому мне не нужно определять ни одно из этих требований:

Требования к элементам контейнера STL / CLR

Эти требования были бы необходимы, если бы я определил cliext::vector<MyClass> ^myVector, потому что тогда копия каждого элемента будет храниться в контейнере и тому подобное.

Все ли в порядке? Потому что я получаю NullReferenceException, когда извлекаю элемент из вектора. Я вижу, что объект правильно построен, но когда я возвращаю его из вектора, все его члены не определены.

1 Ответ

2 голосов
/ 07 марта 2011

Библиотека STL / CLR была доставлена ​​ с очень опозданием, через три года после первоначальной обещанной даты отгрузки.Всем было быстро понятно, почему он объединил все недостатки встроенных контейнерных классов C ++ с недостатками управляемого управления памятью.Нет никаких преимуществ, у библиотеки нет единственного выкупного значения.Его совместимость с классами C ++ является лишь обязательством, мешающим вам делать правильные вещи.Пересмотрите эту страницу для истории ужасов.

Не тратьте свое время на создание этой работы, это совершенно напрасная трата усилий.Используйте классы в пространстве имен System :: Collections :: Generic.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...