Ein Array von einer Klasse, wie übergibt man parameter dem Konstruktor?
-
Hi,
Wenn ich eine Instanz einer Klasse erstelle, z.B. so:
BlaKlasse KlasseBla(Param1, Param2, Param3);
wie mache ich das mit einem Array davon, also z.B.:
BlaKlasse KlasseBla[4] -> (?)
-
geht afaik nicht.
-
Mist, muss ich also 4 einzelne Instanzen erstellen. Na gut..
-
Hi,
du koenntest die Objekte in nen vector packen
mfg
v R[ Dieser Beitrag wurde am 23.06.2003 um 00:01 Uhr von virtuell Realisticer editiert. ]
-
erm, wie mach ich denn das?
-
Z.B. so:
#include <vector> using namespace std; class Foo { public: Foo(int a, int b) {} //... }; int main() { // falls du alle Foos mit den selben Paramtern initialisieren // willst. vector<Foo> fooVec(4, Foo(1,2)); // ansonsten: vector<Foo> fooVec2; fooVec2.reserve(4); // nicht nötig, aber performanter fooVec2.push_back(Foo(1,2)); fooVec2.push_back(Foo(3,4)); fooVec2.push_back(Foo(47,11)); // ... }
-
oder du machst es so:
CKlasse aKlasse[4];
for(int i = 0; i < 4; i++)
aKlasse[i] = CKlasse(Param1, Param2, Param3);hab jetzt keine Lust codetags zu benutzen
Gruß, Maxi
-
oder du machst es so:
[...]Nur ist das a) keinesweg äquivalent und b) nicht möglich, wenn CKlasse keinen Standardctor bzw. keinen Zuweisungsoperator hat.
-
Also ich würds so probieren:
CKlasse* aKlasse[4]; for(int i = 0; i < 4; i++) aKlasse[i] = new CKlasse(Param1, Param2, Param3);
Frage is nur ob das so gehen würde?!
Der Gedanke dahinter ist, dass ich ohne Klammer dahinter ja den Standartkonstruktor aufrufe.
Dann müsste die letzte Zeile also den entsprechenden anderen Ktor aufrufenSacht mal an, würd das gehen? *neugierig*
[ Dieser Beitrag wurde am 24.06.2003 um 16:13 Uhr von THE_FreaK editiert. ]
-
würde gehen, ist aber nicht äquivalent zu der gewünschten lösung (da alles am heap liegt muss es auch wieder löschen -> blöder mehraufwand für nix)