Vektorklasse in Formulareklasse verwenden?
-
Hey,
Ich versuche gerade meiner Formulareklasse eine private Vektormember zu geben:
std::vector <std::string> MyMap;
Ich bekomme aber immer den Fehler:
c:\documents and settings\elsner\my documents\visual studio 2008\projects\engineering_parts\engineering_parts\add_entry.h(28) : error C4368: "MyMap" kann nicht als Member von "Engineering_Parts::add_entry" (verwaltet) definiert werden: Gemischte Typen werden nicht unterstützt.
Gibt es im System-Namespace auch irgendwo eine Vektorklasse, die neuer ist und die ich nehmen kann?
Wenn nicht: Warum kann ich std::vektor nicht mehr verwenden?Irgendwie ist in Visual Studio ploetzlich alles komisch...
-
777 schrieb:
Wenn nicht: Warum kann ich std::vektor nicht mehr verwenden?
Irgendwie ist in Visual Studio ploetzlich alles komisch...
Yo, das ist doch gemein. Da wird einem klammheimlich eine gemanagte Plattform einfach so unterjubelt, diese Mistkerle!
Schau mal im Namensraum cliext oder nimm gleich eine DotNet-Klasse wie IList<>.
-
So wars nicht gemeint
Ich find Visual Studio schon irgendwie geil - aber man muss sich schon dran gewoehnen.
Und ich arbeite jetzt mal grad 2 Tage mitAber ich habe auf jeden Fall gerade eine Vectorklasse gefunden, welche sich im
Namensraum Microsoft::VisualC::StlClr::IVector befindet.
Ich weiss zwar noch nicht, wie man sie benutzt (weil es scheint keine normale Templateklasse zu sein) aber wenn mir das jemand hier sagt oder ich ein Beispiel im Netz finde wird das Forum dieser Information wohl bald auch noch bereichert.:xmas1: :xmas1: :xmas1:
Edit:
Habs dann so gemacht:
using namespace Microsoft::VisualC::StlClr; IVector<IVector<System::String^>^ >^ structure; structure = gcnew IVector<IVector<System::String^>^ >^;
Das deklarieren funktioniert.
Allerdings nicht, dass definieren.
Das ergibt den Fehler:Fehler 3 error C3698: "Microsoft::VisualC::StlClr::IVector<TValue> ^": Dieser Typ kann nicht als Argument von "gcnew" verwendet werden. c:\documents and settings\elsner\my documents\visual studio 2008\projects\engineering_parts\engineering_parts\Form1.h 233
-
Woran kann das liegen?
Edit:
Wenn ich cliext verwende geht das:
cliext::vector<int>^ v1 = gcnew cliext::vector<int>;
Das wiederum nicht, was ich brauche:
cliext::vector<System::String>^ v1 = gcnew cliext::vector<System::String>;
Fehler 39 error C3699: "%": Diese Referenzierung kann nicht für den Typ "System::String" verwendet werden. C:\Program Files\Microsoft Visual Studio 9.0\VC\include\cliext\vector 1169
cliext::vector<System::String>^ v1e = gcnew cliext::vector<System::String>; //GEHT NICHT cliext::vector<System::String^>^ vec = gcnew cliext::vector<System::String^>; //GEHT!
Wieso geht das eine - aber das Andere nicht?
Ich haette es jetzt fuer logisch gefunden, wenn der ^, der ja gleichbedeutend zum * vorher ist ueberall hinkommt...
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-156867.html
Und hier eine Anlaufstelle für den Unterschied C++ C++/CLI
http://msdn.microsoft.com/de-de/library/ms235289(VS.80).aspx
-
comment3,
-
comment6,
-
comment1,
-
comment2,
-
comment6,
-
comment5,
-
comment1,
-
comment3,
-
comment4,
-
comment1,
-
comment3,
-
comment2,
-
comment5,
-
comment1,
-
comment1,
-
comment3,