- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 23

Thema: class mit übergebenen array Größen erstellen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #3
    HaWe
    Gast
    Zitat Zitat von shedepe Beitrag anzeigen
    Du bist schon ganz gut in der richtigen Richtung unterwegs.

    Ein multidimensional array in C++ ist eigentlich eine Liste von Pointer. D.h. list[0] z.B. liefert einen Pointer zurück, und auf diesem wird mit list[0][1] z.B. auf das 2. Element des Pointer zugegriffen.
    Deshalb kann man wie in Variante 1 das mit einer Schleife initialisieren.

    Variante 1
    Code:
    char * list;
    list = new char[menulen * captlen]
    Alternativ kann man auch einen außreichend großen Block Speicher allokieren.

    Variante 2
    Code:
    char ** list;
    list = new char*[menulen];
    for(int i = 0; i < captlen; i++)
    {
       list[i] = new char[captlen];
    }
    //Zugriff auf stelle x, y
    char val = list[x * captlen + y)
    Nachzulesen gibt es das z.B. hier: https://stackoverflow.com/questions/...in-c-using-new

    Ein Tipp außerdem: Solltest du das auf einem Mikrocontroller machen wollen solltest du auf new verzichten. Am PC würde ich auch auf die Arrays verzichten und stattdessen einen std::vector<std::vector<char>> list verwenden. Dann muss man nämlich den Speicher nicht von Hand aufräumen und hat dynamische Größen geschenkt bekommen.
    danke,
    ich wollte es tatsächlich auf einem ESP oder ARM machen, evtl. aber auch kompatibel zu einem Raspi.
    (schön ntl, wenn es später auch auf AVRs läuft.)
    vector kenne ich noch nicht, aber für später ist es wichtig, dass ich prinzipiell auf diese Weise den Zugriff habe auf 2-dim arrays, sowohl intern als auch dann von der aufrufenden Funktion:

    this->char list[10][20]={"line0", "line1", "line2", "line3",..., "line9"};
    Serial.println(this->list[k]);

    tMenu mymenu(10,20);
    strcpy(mymenu.list[5], "5 new testline", sizeof(testline));
    mymenu.list[5][0]='>';

    also Zugriff direkt auf die 2-dim Struktur, ohne immer rechnen zu müssen
    x * captlen + y

    Wie macht man es also am besten, cross-over-Plattform-kompatibel?
    Geändert von HaWe (04.12.2018 um 09:46 Uhr)

Ähnliche Themen

  1. Change member of a class from another class
    Von iciwi im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 27.08.2016, 09:45
  2. neues Byte aus Byte-Array erstellen
    Von BoondockDuck im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 06.09.2008, 07:53
  3. Bits in sämtlichen Größen :)
    Von squelver im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 22.11.2007, 12:02
  4. SMD-Größen für SMD-Anfänger
    Von jeybo im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 29.08.2006, 07:04
  5. Eagle - Größen
    Von BlackDevil im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 9
    Letzter Beitrag: 27.03.2006, 22:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen