Klassentemplate: Attribut -> generisches Feld
-
Also ich hab eigentlich meiner Meinung nach schon ein guten Ansatz:
template <typename T, int Groesse> class Array { private: T objekte[Groesse]; public: Array(); }; int main(){ // int o={1,2,3,4,5,6,7,8,9,10}; Array<int,10> meinArray; }Diesen code in etwa habe ich bei wikibooks gefunden und der passt eigentlich auch ganz gut zu meiner Aufgabe.
Die Frage ist jetzt aber wie ich mein array "int o[]" in den Klassenaufruf implementiere. Außerdem stellt sich mir die Frage wie ich den Konstruktor umändern muss.Meine Version hat auf jedenfall nicht geklappt:
template <typename T, int Groesse> class Array { private: T objekte[Groesse]; public: Array(T *p):objekte(p){}; }; int main(){ int o={1,2,3,4,5,6,7,8,9,10}; Array<int,10> meinArray(o); }Unter der Forum suche habe ich auf jeden fall dementsprechend keine Lösung gefunden.
Vieleicht hat ja jemand von euch nen Tip
-
Da musst du dir einen passenden Konstruktor schreiben, der alle Einträge kopiert. Stichwort: Deep Copy.
Das kann dann als ganz einfaches Beispiel so aussehen:
template <typename T, int Groesse> class Array { private: T objekte[Groesse]; public: Array(T *p){ for(int i=0; i<Groesse; ++i) objekte[i]=p[i]; }; }; int main(){ int o[10]={1,2,3,4,5,6,7,8,9,10}; Array<int,10> meinArray(o); }
-
Super
Dankeschön. Ich mein wenn mans jetzt so sieht hätte man auch selber drauf kommen können ^^
-
Willst du das benutzen oder machst du es zur Übung?
Kannst ja mal bei boost::array bzw. tr1::array abgucken