Ist das gut ?



  • Peter25 schrieb:

    Ich kenn die groesse des array noch nicht. Kann ich es dann so machen wie unten oder sollte ich new/malloc verwenden ?

    Weder noch. Dein Code ist falsch, da er einen Speicherbereich über einen unitialisierten Pointer beschreibt. new/malloc selber zu verwenden ist auch unnötig. Warum nicht:

    std::vector<unsigned short> pixels (width * height);
    

    ?



  • Ja ich denke Vector ist wohl am besten. Beim handling ist da ja auch kaum ein Unterschied zum array. Man kann ja auch den [] Operator verwenden.



  • Aber die Funktion die will einen pointer auf das array vom Typ unsinged short*.
    Ich glaub mit Vector komm ich da net weit. Also wohl doch new .

    function (const unsigned short *pixels)
    


  • Peter25 schrieb:

    Aber die Funktion die will einen pointer auf das array vom Typ unsinged short*.
    Ich glaub mit Vector komm ich da net weit. Also wohl doch new .

    function (const unsigned short *pixels)
    

    Dann schau Dir nochmal das Interface von std::vector an. vector::data() z.B.



  • Furble Wurble schrieb:

    Peter25 schrieb:

    Aber die Funktion die will einen pointer auf das array vom Typ unsinged short*.
    Ich glaub mit Vector komm ich da net weit. Also wohl doch new .

    function (const unsigned short *pixels)
    

    Dann schau Dir nochmal das Interface von std::vector an. vector::data() z.B.

    Und falls du kein C++11 verwenden darfst/kannst:

    int witdh = 10;
    int height = 20;
    std::vector<unsigned short> pixels(width * height);
    unsigned short* ptr = &pixels[0]; // natürlich auch const, falls benötigt
    

    Edit: Pointer-Typ gefixt



  • unsigned char* ptr = &pixels[0]; // natürlich auch const, falls benötigt

    Was bringt mir das ich brauch nen unsigned short und damit gehts nicht



  • Hä??

    Du hast da einen zeiger auf unsigned short, und zwar auf ein Feld von unsigned shorts. Wenn du einen einzelnen willst, kannst entweder per Index Operator auf den vector zugreifen oder auch hier auf dieses Feld.

    Wo ist das Problem?



  • Hihi.
    Peter heißt jetzt Kathrin. 😃



  • Kathrin27 schrieb:

    unsigned char* ptr = &pixels[0]; // natürlich auch const, falls benötigt

    Was bringt mir das ich brauch nen unsigned short und damit gehts nicht

    Nach 20 min auf den Bildschirm starren, darfst du, bevor du antwortest, ruhig noch mal deinen Browser aktualisieren...



  • Oh 😃

    Dein Fehler kam bei usn allen gar nicht an, glaub ich, weil ich hab nur direkt short gesehen. Und auch angenommen,d ass der TE so flexibel ist den Typ selbst noch gerade anzupassen...



  • Kathrin27 schrieb:

    unsigned char* ptr = &pixels[0]; // natürlich auch const, falls benötigt

    Was bringt mir das ich brauch nen unsigned short und damit gehts nicht

    Der Vector ist intern quasi ein Array aus unsigned short und gibt dir auch einen Pointer darauf. Ich würde die Funktion einfach so aufrufen:

    function (pixels.data());
    

Anmelden zum Antworten