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 ...