tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
2390
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MFC openGL MFC openGL ist offline Mitglied Brokat
    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 schonmal
    Geändert von MFC openGL (14.04.05 um 14:58 Uhr)
     

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Was ist ein Template Array? Ein std::vector?

    Bei sämtlichen STL-Containern bekommst du mit .size() die Anzahl der Einträge.
     

  3. #3
    MFC openGL MFC openGL ist offline Mitglied Brokat
    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)
     

  4. #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."

  5. #5
    MFC openGL MFC openGL ist offline Mitglied Brokat
    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)
     

  6. #6
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    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.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  7. #7
    MFC openGL MFC openGL ist offline Mitglied Brokat
    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
     

  8. #8
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Zitat Zitat von MFC openGL
    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 :
    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."

  9. #9
    MFC openGL MFC openGL ist offline Mitglied Brokat
    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

  1. Pixel länge eines Textes bestimmen
    Von Winner im Forum VisualStudio & MFC
    Antworten: 5
    Letzter Beitrag: 06.05.09, 09:11
  2. Antworten: 2
    Letzter Beitrag: 06.02.09, 18:27
  3. Antworten: 2
    Letzter Beitrag: 13.07.08, 19:57
  4. [newbie] Array-Länge bestimmen
    Von LukeS im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 07.02.06, 09:47
  5. Länge eines Eingabefeldes bestimmen, mit Besonderheit
    Von visionsign im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 13.04.05, 13:16