ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
2390
2390
EMPFEHLEN
-
14.04.05 11:44 #1
- Registriert seit
- Oct 2004
- Beiträge
- 483
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 schonmalGeändert von MFC openGL (14.04.05 um 14:58 Uhr)
-
Was ist ein Template Array? Ein std::vector?
Bei sämtlichen STL-Containern bekommst du mit .size() die Anzahl der Einträge.
-
14.04.05 13:02 #3
- Registriert seit
- Oct 2004
- Beiträge
- 483
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...Geändert von MFC openGL (14.04.05 um 18:15 Uhr)
-
14.04.05 18:18 #4
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
Template ist kein Datentyp. Willst du innerhalb eines Templates die sizeof() haben?
Versuch das mal:
Code :1 2
int x[50]; cout << sizeof( x[] ) / sizeof( int );
Ansonsten würde ich auch zu std::vector raten.Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."
-
14.04.05 18:41 #5
- Registriert seit
- Oct 2004
- Beiträge
- 483
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.Geändert von MFC openGL (14.04.05 um 18:53 Uhr)
-
14.04.05 19:02 #6
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
Tja, die Grösse ist leider nur zur Compilezeit bekannt. Nimm lieber einen std::vector.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.Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."
-
14.04.05 19:32 #7
- Registriert seit
- Oct 2004
- Beiträge
- 483
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
-
14.04.05 19:42 #8
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
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:
Zitat von MFC openGL
Code :1 2
void Tuwas( char* test ); void Tuwas( char test[] );
Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."
-
14.04.05 21:00 #9
- Registriert seit
- Oct 2004
- Beiträge
- 483
Stimmt, und wieder muss ich dir recht geben.... da fehlen ca 10 Jahre Praxiserfahrung, aber dann bin ich sicher genauso schlau wie du
Ähnliche Themen
-
Pixel länge eines Textes bestimmen
Von Winner im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 06.05.09, 09:11 -
[C] Bestimmen der Länge des Ergebnisses von sprintf
Von SirOPIUM im Forum C/C++Antworten: 2Letzter Beitrag: 06.02.09, 18:27 -
Länge eines Objektes durch Schnittpunkt mit anderen Objekten bestimmen
Von TOMahawk85 im Forum Cinema 4DAntworten: 2Letzter Beitrag: 13.07.08, 19:57 -
[newbie] Array-Länge bestimmen
Von LukeS im Forum C/C++Antworten: 4Letzter Beitrag: 07.02.06, 09:47 -
Länge eines Eingabefeldes bestimmen, mit Besonderheit
Von visionsign im Forum Flash PlattformAntworten: 4Letzter Beitrag: 13.04.05, 13:16





Zitieren
Login






