Array und Initialisierungsliste Klasse



  • wie kann ich ein Array in einer Klasse (Initialisierungsliste) initialisieren?

    class foo{
    
      int array[2];
    
    //statt so
    foo(){
      array[0]=1;
      array[1]= 6;
    }
    //so rigendwie???
      foo() :array(.....){
    
      }
    };
    


  • Perferktionist schrieb:

    wie kann ich ein Array in einer Klasse (Initialisierungsliste) initialisieren?

    Garnicht.



  • das einzige was man machen könnte(bin mir aber nicht sicher obs auch klappt) ist dass du einen zeiger als member variable nimmst der dann auf den anfang des arrays zeigt (den kann man in der initliste initialiseren)
    nur muss man dazu noch die anzahl der elemente speichern und man darf ausserhalb der klasse nicht das array verändern und vor allem nicht löschen
    somit wäre der sinn auch schon hinfällig

    machs folgender massen

    class Arr
    {
        int *list;
        unsigned anzahl;
    public:
        Arr(int * array, unsigned anzahl)
            : list(new int[anzahl]), this->anzahl(anzahl)
        {
            // und hier eifnach das array kopieren...
        }
    };
    


  • // und hier eifnach das array kopieren...
    

    und welchen vorteil hätte diese version noch von der des Perferktionisten?
    Der einzige ist, dass die Länge das Arrays dynamisch festgelegt werden kann - aber ich sehe nicht mal nen kleines Anzeichen dafür, dass er das vor hatte Oo

    foo(){
      array[0]=1;
      array[1]= 6;
    }
    

    anders geht es (noch? wer weiß ^^) nicht

    bb



  • int a[3] = {2,2,2};
    

    Und ab C++0x gibts die initializer_list.

    http://en.wikipedia.org/wiki/C%2B%2B0x#Initializer_lists



  • und wann wird c++0x kommen?


  • Administrator

    Quellcode schrieb:

    und wann wird c++0x kommen?

    Voraussichtlich 2009.
    Aber es gibt ja die super Witzbolde, welche sagen, dass das 0x ein Hexadezimalwert darstellen soll. Daher wäre auch 0xA oder 0xB usw. möglich. Hoffen tut es aber wohl niemand.

    Bis die entsprechenden Compiler draussen sind, wird es nämlich sowieso noch zusätzlich 1 - 2 Jahre dauern.

    Grüssli



  • wofür steht das 0x....
    ich dachte jetzt aber auch an hexcode...
    klär mich auf



  • die c++-standards wurden bisher mit zweistelligen jahreszahlen versehen, entsprechend dem jahr in dem sie erschienen sind. so etwa der aktuelle standard c++03 für 2003. davor hieß er c++98 für 1998.
    das 0X heißt einfach nur, dass das X durch eine beliebige zahl ersetzt werden kann. als man damit anfing, bestanden noch hoffnungen, dass X irgendwo bei 7 oder so angesiedelt sein wird.


Log in to reply