- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
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. #9
    HaWe
    Gast
    also dies funktioniert nicht

    Code:
    class tMenu {
      
      protected:    
            int16_t  MENULEN, CAPTLEN;     
            char    list[MENULEN][CAPTLEN];      
                  
      
      public:      
        
         tMenu (int16_t menulen, int16_t captlen) // constructor
         {
            MENULEN = menulen;
            CAPTLEN = captlen;
           
            list = new char*[menulen];
            for(int i = 0; i < captlen; i++)
            {
              list[i] = new char[captlen];
            }
            
         }      
    
    };
    exit status 1
    invalid use of non-static data member 'tMenu::MENULEN'

    so auch nicht:
    Code:
    class tMenu {
      
      protected:    
            int16_t  MENULEN, CAPTLEN;                  
            char    **list;      
      
      public:      
          
         tMenu (int16_t menulen, int16_t captlen) // constructor
         {
            MENULEN = menulen;
            CAPTLEN = captlen;
           
            list = new char*[menulen];
            for(int i = 0; i < captlen; i++)
            {
              list[i] = new char[captlen];
            }
            
         }      
    }; 
    
    tMenu mymenu(20,10);
    //...
      char test[15]="5 newline_";
      strcpy(mymenu.list[5], test);
    exit status 1
    'char** tMenu::list' is protected

    dies funktioniert offenbar, von außen aufgerufen

    Code:
    class tMenu {
      
      protected:    
            int16_t  MENULEN, CAPTLEN;                  
              
      
      public:      
         char    **list;     
         tMenu (int16_t menulen, int16_t captlen) // constructor
         {
            MENULEN = menulen;
            CAPTLEN = captlen;
           
            list = new char*[menulen];
            for(int i = 0; i < captlen; i++)
            {
               list[i] = new char[captlen];
            }
            
         }      
    
     
         ~tMenu() // destructor
         {
           // Dynamically delete the array we allocated earlier
           delete[] list ;
         }
    
    };
     
    
    tMenu mymenu(20,10);
    
    void setup(void)
    {
      // Start Serial
      
      Serial.begin(115200);
      delay(2000); // wait for Serial()
      Serial.println("Serial started");
      
      char test[15]="5 newline_";
      strcpy(mymenu.list[5], test);
      Serial.println(mymenu.list[5]);
      mymenu.list[5][0]='>';
      Serial.println(mymenu.list[5]);
      //
    }
    - - - Aktualisiert - - -

    was allerdings nicht funktioniert, ist die Benutzung der array Zellen intern,
    z.B. per init cstrings reinkopieren:


    Code:
    class tMenu {
      
      protected:    
            int16_t  MENULEN, CAPTLEN; 
            char buf[20];                 
              
      
      public:      
         char    **list;     
         tMenu (int16_t menulen, int16_t captlen) // constructor
         {
            MENULEN = menulen;
            CAPTLEN = captlen;
           
            list = new char*[MENULEN];
            for(int i = 0; i < CAPTLEN; i++)
            {
              list[i] = new char[CAPTLEN];
            }        
         }      
         
         void init() {
            for(int i=0; i<MENULEN; i++) {
               sprintf(buf,"%d line %d", i);
               strcpy(list[i], buf);
            }
         }
    
     
         ~tMenu() // destructor
         {
           // Dynamically delete the array we allocated earlier
           delete[] list ;
         }
    
    };
    
    //
      tMenu mymenu;
      mymenu.init();
    Exception (29):
    epc1=0x40205d7b epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

    ctx: cont
    sp: 3fff0250 end: 3fff0550 offset: 01a0

    >>>stack>>>
    3fff03f0: 00000022 3ffef4fc 00000028 402025a3
    3fff0400: 3ffe9d80 4010560e feefeffe feefeffe
    3fff0410: feefeffe feefeffe 00000000 4000050c
    3fff0420: 3fffc278 40105464 3fffc200 00000022
    3fff0430: 3fff0440 feefeffe feefeffe feefeffe
    3fff0440: 402040f9 00000030 0000001e ffffffff
    (usw...)
    <<<stack<<<
    - - - Aktualisiert - - -

    auch so geht es nicht:
    Code:
       void init() {
            for(int i=0; i<MENULEN; i++) {
               sprintf(buf,"%d line %d", i);
               strcpy(list[i*CAPTLEN], buf);
            }
         }
    wie muss man jetzt stattdessen this->init() richtig codieren?
    Geändert von HaWe (05.12.2018 um 09:00 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
  •  

fchao-Sinus-Wechselrichter AliExpress