Zeiger auf neuen Datentyp



  • Wenn ich versuche in einer Funktion auf einen leeren von mir erstellen Datentyp zuzugreifen, kommen 'lustige' Fehlermeldungen -.-

    Sieht jemand den Fehler?

    struct karton{
        char array[10][20];
    };
    
    extern karton ab_karton;
    
    void postmann(int a, karton *z)
    {
        z.array[0][0] = 'H';
    }
    
    Links von ".c_array" muss sich eine Klasse/Struktur/Union befinden.
            Typ ist 'karton *'
    

    *grübel*



  • Du übergibst einen Pointer, aber versucht per Indexoperator zuzugreifen.

    z->array[0][0] = 'H';
    

    Sollte gehen.

    Oder du nutzt Referenzen 😉



  • oh, *gleich merken*

    danke schön.



  • oh, aber wie rufe ich dann die Funktion in der main auf?

    postmann( a, *z)
    


  • struct karton{ 
        char array[10][20]; 
    }; 
    
    extern karton ab_karton; 
    
    void postmann(int a, karton *z) 
    { 
        z.array[0][0] = 'H'; 
    }
    
    int main()
    {
        karton k;
        postmann(1, &k);
        //Oder per Heap:
    
        karton *j = new karton;
        postmann(42, j);
        delete j;
    }
    


  • EDIT:: Fehler gefunden -.- uiui das ist der Mangel an Schlaf ^^



  • struct package
    {
        char data[10][20];
    };
    
    void package_set_char(const char c, std::size_t x, std::size_t y, package& dest)
    {
        dest.data[x][x] = c;
    }
    
    int main()
    {
        package item;
        package_set_char('H', 0, 0, item);
    
        package* ptr_item = new package;
        package_set_char('a', 0, 1, *ptr_item);
        delete ptr_item;
    }
    

    ... wobei sich da natürlich eher eine Memberfunktion anbieten würde ... aber es geht ja um das Prinzip 😛


Log in to reply