Vector mit eigener Klasse erstellen
-
Ich möchte in meinem Programm per Knopfdruck einen Vektor in Verbindung mit einer eigenen Klasse erstellen.
Der Konstruktor erfordert eine int Variable, die im Normalfall den Wert 0 erhalten soll.
//OberKlasse.cpp OberKlasse::OberKlasse(int X=0) {...} //Form1.h private: System::Void Testfunktion_Click(System::Object^ sender, System::EventArgs^ e) { std::vector<OberKlasse> Vektor(8); }
Mein Problem ist, dass der Compiler wegen einem fehlenden Standardkonstruktor quengelt.
Wie müsste ich denn die Zeile abändern, damit es funktioniert?Nebenfrage: Muss man Vektoren zwangsweise mit 3 Indizes verwenden (Vektor[1,2,3]...), oder reicht auch ein Index (Vektor[1]...)?
-
Mach entweder C++/CLI oder C++ - Du mischst die beiden!
Zu deiner eigentlichen C++ Frage:
Default Werte für Argumente gehören in den Header, im Source File sollen die nicht sein! -> dann hast Du einen Default Konstruktor.Nebenfrage: Muss man Vektoren zwangsweise mit 3 Indizes verwenden (Vektor[1,2,3]...), oder reicht auch ein Index (Vektor[1]...)?
Verstehe ich nicht ganz. Beim std::vector<..> gibt nur eine Index Operator für EIN Index.
-
Danke erstmal für die schnelle Hilfe.
Was ist denn der Unterschied zwischen C++ und C++/Cli?
Wie müsste ich den Code abändern, damit ich beim erstellen des Vektors eine Variable an den Konstruktor übergeben kann?Vektor.resize(4,OberKlasse(6)); //das bringt mein Programm zum Absturz
-
GR-Thunderstorm schrieb:
Wie müsste ich den Code abändern, damit ich beim erstellen des Vektors eine Variable an den Konstruktor übergeben kann?
Vektor.resize(4,OberKlasse(6)); //das bringt mein Programm zum Absturz
http://www.cplusplus.com/reference/stl/vector/
GR-Thunderstorm schrieb:
Danke erstmal für die schnelle Hilfe.
Was ist denn der Unterschied zwischen C++ und C++/Cli?C++/CLI ist eine eigene .NET Sprache wie z.B. VB.NET oder C#. Allerdings hat sie eine kompiliziertere Syntax und hat sehr, sehr viele Fallstricke - gerade für Anfänger. Hierzu noch: http://www.c-plusplus.net/forum/263084
C++/CLI ist für Interop Layer zwischen der managed / native Welt geeignet.