verschiedene konstruktoren aufrufen
-
Ich habe eine Liste der Klasse "Net" angelegt:
Net netarray[ 3 ];
Nun möchte ich für jedes Listenelement den Konstruktor aufrufen, wobei für die Konstruktoren jeweils ein anderer Wert übergeben wird:
Der Konstruktor wird z.b folgendermaßen deklariert:Net::Net( int numPins ) { netName = 0; netDegree = 0; pinlist[ numPins ]; }
Der Übergebene Parameter "numPins" soll nun immer unterschiedlich sein. Wie könnte man sowas realisieren???
-
cuba1 schrieb:
Ich habe eine Liste der Klasse "Net" angelegt:
Das ist ein Array, keine Liste. Liste wäre
std::list
.cuba1 schrieb:
Wie könnte man sowas realisieren???
Kein Array nehmen. Rohe Arrays nimmt man sowieso nur, wenn es absolut rein gar keine Alternative gibt.
Verwende z.B. STL-Container. Und steige im Konstruktor von Zuweisungen auf Initialisierungslisten um.
-
Mit new und delete mit der Verwendung von Arrays, besser std::vector verwenden, dann brauchst du die Größe nicht anzugeben, weil dieser sich selbst verwaltet.
-
Ich habe aber die Vorgabe das ganze mit Arrays zu machen.
Gibt es da irgendeine Möglichkeit?
-
int *myarray = new int[10]; //mache was mit dem array delete[] myarray;
-
Eine Initialisierungsliste in C++0x.
-
HighLigerBiMBam schrieb:
int *myarray = new int[10]; delete[] myarray;
Das hilft herzlich wenig, wenn es darum geht, Konstruktoren der Elemente aufzurufen.
314159265358979 schrieb:
Eine Initialisierungsliste in C++0x.
Initialisierungslisten für Arrays gibts schon in C++98.
Net netarray[3] = {Net(4), Net(7), Net(2)};
-
Edit: Hier stand Schwachsinn, Problem prinzipiell falsch verstanden.
-
Nexus schrieb:
HighLigerBiMBam schrieb:
int *myarray = new int[10]; delete[] myarray;
Das hilft herzlich wenig, wenn es darum geht, Konstruktoren der Elemente aufzurufen.
314159265358979 schrieb:
Eine Initialisierungsliste in C++0x.
Initialisierungslisten für Arrays gibts schon in C++98.
Net netarray[3] = {Net(4), Net(7), Net(2)};
Hallo Nexus.
Der Aufruf der Konstruktoren könnte prinzipiell so klappen. Ist das auch möglich wenn die Anzahl der Arrayelemente Variabel istint arrayelemente
(z.B in einer for-schleife?)?
-
cuba1 schrieb:
Hallo Nexus.
Der Aufruf der Konstruktoren könnte prinzipiell so klappen. Ist das auch möglich wenn die Anzahl der Arrayelemente Variabel istNein, da die Anzahl der Array-Elemente in C++ nicht variabel sein kann.
Aber das ist ja nur einer der Gründe für STL-Container...
-
Hier passt dann aber die C++0x initializer list
-
314159265358979 schrieb:
Hier passt dann aber die C++0x initializer list
Wenn man wegen der dynamischen Grösse auf STL-Container umsteigt – nein
-
Da hast du natürlich Recht
-
Nexus schrieb:
Initialisierungslisten für Arrays gibts schon in C++98.
Net netarray[3] = {Net(4), Net(7), Net(2)};
Wenn der Konstruktor "implizit" ist (also keinexplicit
verwendet wurde), dann müsste es sogar mitNet netarray[3] = {4, 7, 2};
funktionieren.
Bzgl "Dynamik": STL-Container nehmen. Die können ihre größe zur Laufzeit anpassen.