Wie initialisiere ich einen stl-Vektor von Objekten, die selbst nicht-triviale Konstruktoren haben?

angenommen ich habe folgende Klasse:

class MyInteger {
private:
  int n_;
public:
  MyInteger(int n) : n_(n) {};
  //MORE STUFF
};

Außerdem wird angenommen, dass diese Klasse nicht über eine Standard-trivialen Konstruktor MyInteger(). Ich muss immer Angebot ein int die Initialisierung aus irgendeinem Grund. Und dann angenommen, dass irgendwo in meinem code brauche ich eine vector<MyInteger>. Wie kann ich die initialisieren jedes MyInteger Komponente in diesem vector<>?

Habe ich zwei Situationen (wahrscheinlich die Lösung ist die gleiche, aber ich werde Stand Ihnen sowieso), eine normale variable innerhalb einer Funktion:

int main(){
    vector<MyInteger> foo(10);  //how do I initialize each 
                                //MyInteger field of this vector? 
    doStuff(foo);
}

und als Daten in einer Klasse:

class MyFunClass {
private:
   vector<MyInteger> myVector;

public:
   MyFunClass(int size, int myIntegerValue) : myVector(size) {}; 
   //what do I put here if I need the 
   //initialization to call MyInteger(myIntegerValue) for all 
   //components of myVector?
};

Ist es möglich, es zu tun, nur in der Initialisierungs-Liste oder muss ich schreiben die Initialisierung von hand in die MyFunClass(int, int) - Konstruktor?

Scheint sehr einfach, und doch habe ich irgendwie verpasst inmy book und kann Sie nicht finden im web.

InformationsquelleAutor der Frage Rafael S. Calsaverini | 2011-05-26

Schreibe einen Kommentar