CArray Template



  • Hallo zusammen, ich interessiere mich mal wieder für etwas.
    Bei der Deklaration von einem CArray-Objekt kann man zwei Typen ( Klassen )
    übergeben. Also: CArray<TYPE, ARG_TYPE> myArray; mit Template.
    TYPE ist mir klar, aber was soll ARG_TYPE ? Die Index-Klasse ist eigentlich
    int ! Bei CArray<CPoint, CPoint> myArray, kann ich doch nicht schreiben:
    myArray[CPoint(10, 20)] = CPoint(40, 30); sondern vielleicht:
    myArray[10] = CPoint(40, 30); sofern myArray schon 11 Elemente hat.
    Was also meint man mit ARG_TYPE ?
    Dann wüsste ich noch gern, was die Member GetData für einen Zweck hat.
    Wenn jemand eine Antwort wüsste ...



  • ARG_TYPE gibt den Datentyp für die Parameter bei den CArray-Methoden an (d.h. standardmäßig const TYPE&, damit Kopien vermieden werden), wie z.B. für CArray::Add.

    Und mit GetData erhält man direkt (Lese-)Zugriff auf das interne Array - als Zeiger, d.h. die Anfangsadresse des Arrays (ähnlich wie bei std::vector die Funktion data()).

    PS: Überlass die Zeilenumbrüche bei deinen Beiträgen dem Browser!



  • Danke Th69 ! Ich werde mich bessern ...



  • Ich melde mich nochmal: Wenn in einem CArray Einträge vom Typ CPoint vorgesehen sind, dann dürfte CArray::Add auch nur Argumente vom Typ CPoint entgegennehmen. Wozu also ARG_TYPE ?



  • So jetzt habe ich's kapiert: ARG_TYPE ist entweder TYPE oder TYPE& hoffentlich stimmts auch. Tschüss ...


Anmelden zum Antworten