Template Array Länge bestimmen ? WIE ?

MFC openGL

Erfahrenes Mitglied
HELP ME PLEASE ...Template Array Länge bestimmen ? WIE ?

Hallo,

ich suche eine Möglichkeit, von einem TemplateArray dynamisch die Länge zu bestimmen. Kann mir einer verraten wie ich das anstellen kann ?

Danke schonmal
 
Zuletzt bearbeitet:
Was ist ein Template Array? Ein std::vector?

Bei sämtlichen STL-Containern bekommst du mit .size() die Anzahl der Einträge.
 
Das soll ein von mit erstelltes Array von Typ Template sein.

T test[];

Aber wie bekomme ich davon die Menge der Einträge ?

Mir würde auch schon reichen wenn ich wüsste wie ich z.b. von

int x[50];

die 50 bekommen würde, wenn ich die nicht weiss....


Habe mal das Forum durchsucht, und bin darauf gestoßen das es nicht möglich ist ohne die Klasse Vector das Problem zu lösen...
 
Zuletzt bearbeitet:
Template ist kein Datentyp. Willst du innerhalb eines Templates die sizeof() haben?

Versuch das mal:
Code:
int x[50];
cout << sizeof( x[] ) / sizeof( int );

Ansonsten würde ich auch zu std::vector raten.
 
Ja genau das will ich, das klappt auch...

aber wenn ich das integer Array an eine Template Funktion übergebe, und das dort dann mit


funktion( T x[])
{
cout << sizeof( x ) / sizeof( T ); //sizeof(x[]) gibt einen Syntax Fehler...


berechnen will, kommt nur Müll raus...

Die Template Funktion kennt weder WAS kommt, noch WIE LANG es ist.
Die sizeof Formel würde das ja beheben können, wenn die nicht z.b. bei einem 9er char Array 4 ausgeben würde, jedoch in der main wo der datentyp bekannt ist 9.
 
Zuletzt bearbeitet:
Die sizeof Formel würde das ja beheben können, wenn die nicht z.b. bei einem 9er char Array 4 ausgeben würde, jedoch in der main wo der datentyp bekannt ist 9.
Tja, die Grösse ist leider nur zur Compilezeit bekannt. Nimm lieber einen std::vector.
 
Aber wenn die Größe doch nicht bekannt ist, und da stimme ich dir voll zu, wieso gibt der dann so einen Müll aus, und nicht NULL oder sowas ?
Finde das ist ein Manko der Funktion sizeof()


Naja, ich mach das jetzt über die Vector Klasse der STL...

Thx @ Kachelator
 
MFC openGL hat gesagt.:
Aber wenn die Größe doch nicht bekannt ist, und da stimme ich dir voll zu, wieso gibt der dann so einen Müll aus, und nicht NULL oder sowas ?

4 Bytes ist normalerweise die Grösse eines Pointers -- deshalb. Das Array, das übergeben werden soll, wird als Pointer übergeben. Folgende Funktionsdeklarationen sind vom Resultat her identisch:
Code:
void Tuwas( char* test );
void Tuwas( char test[] );
 
Stimmt, und wieder muss ich dir recht geben.... da fehlen ca 10 Jahre Praxiserfahrung, aber dann bin ich sicher genauso schlau wie du ;)
 
Zurück