gruebel gruebel



  • lookias schrieb:

    das geht irgendwie nicht konform mit meinem wissen ueber normale klassen

    Ich sehe nicht im welchen Zusammenhang dein Problem mit Klassen steht. Vielleicht verstehe ich aber auch einfach dein Problem nicht.

    pType ist ein Zeiger und damit ein gültiges Argument für den eingebauten operator[], der ja nichts weiter bedeutet als *(zeiger + offset).

    Könntest du dein Problem vielleicht nochmal genauer formulieren?



  • lookias schrieb:

    nun wenn ich von array sone instanz meinetwegen array<int> instanz erzeuge

    dann steht doch in der klasse array ein zeiger

    int *ptype
    

    oder?

    Ja, aber der Konstruktor sieht mit Sicherheit so oder ähnlich aus:

    Array::Array(int itsSize)
      : pType(new T[itsSize]),
        itsSize(itsSize)
    { }
    


  • aso?

    kannst mir bitte mal geschwinde erklaehren wie man diesen index operator bei zeigern anwendet

    und was man davon haben kann?

    das ist wohl dann mein prob



  • lookias schrieb:

    nun wenn ich von array sone instanz meinetwegen array<int> instanz erzeuge
    dann steht doch in der klasse array ein zeiger

    😕 😕
    Deine Instanz besitzt genau die Attribute, die in der Klassendefinition festgelegt sind. instanz ist somit ein Objekt der Klasse Array und besitz die Eigenschaften: pType (Zeiger auf den Anfang) und itsSize (Größe). Der Indexoperator operator[] ermöglicht dir den direkten Zugriff auf ein bestimmtes Element im array.



  • lookias schrieb:

    kannst mir bitte mal geschwinde erklaehren wie man diesen index operator bei zeigern anwendet

    Type *pointer;
    pointer[n] == pointer + n == n[pointer]
    

    🙂



  • ...gib's zu: du hast noch nie Speicherplatz dynamisch allokiert, oder? 😉
    hier ein Bsp:

    int num;
    std::cin >> num;
    int * ptr = new int[num]; //Speicher anlegen: array mit num Elemnten vom Typ int
    //statisch angelegt sähe es so aus: int ptr[num]; dazu muß die Größe aber schon beim Compilieren bekannt sein
    //jetzt kannst du mit dem array genau so umgehen als wenn es statisch angelegt wäre, zB verwende operator[]
    ptr[1]=9;
    
    delete []ptr; //Speicher freigeben nicht vergessen!
    


  • ptype(new T[itsSize]);
    

    ruft doch den in diesem moment deklarierten konstruktor auf richtig

    nun koennte man das auch so schreiben?

    ptype = new t(itssize);
    

    wenn nicht bitte erklaehren



  • aua, aua, aua, das tut weh, 😞



  • na immer locker fang damit gerade erst an



  • don't worry! war doch nicht bös' gemeint. Aber hast du schuldest mir noch eine Antwort. s.o.
    Hast du dich schon mal mit Zeigerarithmetik befasst? Ich glaube, daß du das mal vorher tun solltest, sonst steigst du beim this ganz aus. Mutig vorwärts!



  • jojo

    das geht alles

    nur war mir das mit dem dyn array nicht so bekannt
    dachte man nimmt da generell listen
    nun frag ich mich allerdings inwiefern listen dieser technik ueberlegen
    sind oder auch nicht 😕



  • mal zum verstaendnis das ganze dient doch nur dazu

    im programm ein bel grosses array erzeugen zu koennen

    und mit dem zweiten konstruktor moeglicherweise ein array zu kopieren ja?



  • <ot>und was hat das mit "gruebel gruebel" zutun? dem threadtitel?
    bitte geeignete threadtitel wählen, möglichst angepasst der frage, die man hat.

    sonst haben wir gleich wieder hunderte von "ich suche hilfe" threads...uff 😉

    ps: es schult auch, genau zu formulieren, wo es hackt.</ot>



  • i) zum Beispiel
    ii) true! Nennt sich auch Copykonstruktor



  • jo werdsch machen trotzdem sehr vielen dank fuer die antworten

    da haet ich sonst noch uebermorgen gegruebelt 🤡


Anmelden zum Antworten