Здравствуйте, мне нужно, чтобы вектор (или некоторая другая структура данных, которая похожа) был заполнен управляемыми объектами.
Обычно я могу написать:
std::vector<Object> vect;
Но я не могу использовать:
std::vector<Object^> vect;
Может кто-нибудь объяснить, как изменить объявление или посоветовать другую структуру вместо вектора. Благодарю.
Используйте общий список класса .NET: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx
Перечислите пример перечисления с той же WEB-страницы, как того требует комментарий user1237747:
#include "stdafx.h"using namespace System;
using namespace System::Collections::Generic;
int main(array<System::String ^> ^args)
{
List<String^>^ dinosaurs = gcnew List<String^>();
dinosaurs->Add("Tyrannosaurus");
dinosaurs->Add("Amargasaurus");
for each(String^ dinosaur in dinosaurs )
{
Console::WriteLine(dinosaur);
}
return 0;
}
Замените строку ^ на нужный вам тип. Вы также можете получить доступ к элементам списка по индексу, используя оператор [].
Как правило, избегайте смешивания управляемых и неуправляемых типов, если это не является абсолютно необходимым.
Да, для управляемых типов есть структуры данных stl. Ниже приведен пример использования вектора (по вашему запросу).
#include <cliext/vector>
cliext::vector<Object^> vect;
Документы для этого типа вектора Вот