C++ Windows Forms vector na klasę ref

Witam,

szukam rozwiązania jak stworzyć vector, którego typem jest klasa zarządzana. Dodam, że piszę aplikację okienkową w Windows Forms, której string jest reprezentowany String ^ a; Ze względu na to postanowiłem, że w całym programie będę używał system::String. Napisałem prostą klasę:

ref class sala
{
public:
String ^ snumer;
String ^ snazwa;
String ^ srodzaj;

	sala(String ^ n, String ^ na, String ^ r)
	{
		this->snumer = n;
		this->snazwa = na;
		this->srodzaj = r;
	}
	~sala() {};
};

Teraz chcę stworzyć wektor, który będzie zawierał listę klas

vector <sala^> pomieszczenie;

Po skompilowaniu całego programu kompilator zwraca następujące informacje:

1>------ Kompilacja rozpoczęta: Projekt: Project1, Konfiguracja: Debug Win32 ------
1>MyForm.cpp
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.14.26428\include\vector(984): error C3699: “&&”: nie można użyć tego operatora pośredniego na typie “Project1::sala ^”
1>c:\users\adrian\dysk google\uniwersytet opolski studia\informatyka inżynierskie\semestr letni 2018-2019\programowanie 2\lista 4\lista 4 i 5\project1\project1\myform.h(38): note: zobacz odwołanie do klasy klasa szablon; wystąpienie „std::vector<Project1::sala ^,std::allocator<_Ty>>” jest kompilowane
1> with
1> [
1> _Ty=Project1::sala ^
1> ]
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.14.26428\include\vector(1075): error C3699: “&&”: nie można użyć tego operatora pośredniego na typie “Project1::sala ^”
1>Kompilowanie projektu „Project1.vcxproj” wykonane — NIEPOWODZENIE.
========== Kompilacja: 0 zakończono powodzeniem, 1 zakończono niepowodzeniem, 0 zaktualizowano, 0 pominięto ==========

Na podstawie przykładu tutaj: https://social.msdn.microsoft.com/Forums/vstudio/en-US/6202e1ce-7da3-4ca2-9372-e3f430768251/systemvector-and-ref-class?forum=vcgeneral
Źle zadeklarowałeś wektor.

Jednak mogę się mylić, bo przyznam szczerze pierwszy raz na oczy widzę coś takiego jak ref class w c++. Z tego co na szybko wygooglałem sobie to jest to wymysł ms. Nie mam pojęcia czym się to różni od standardowej klasy w C++. Miło byłoby gdybyś mi to wyjaśnił.

Ogólnie wydaje mi się, że różnicy nie ma żadnej, jedynie jest ona bardziej .net’owa. Więc jeśli piszesz kod tylko pod windows przy użyciu .net’u, to ja się zastanawiam po co piszesz w C++ i winformasach. Nie wiem po co używać C++ do pisania aplikacji tylko pod windowsa (a jestem fanem C/C++), lepiej pisać w C#, a jeśli chcesz pisać aplikację na wiele systemów to nie wiem po co używać .net’u. Lepiej byłoby w takim wypadku użyć Qt, ewentualnie GTK+. Moim zdaniem, jak potrzebujesz .net to piszesz w C#, a jak nie to w C++ lub w języku bardziej nadającym się do rozwiązania danego problemu.