Zum Inhalt springen

probleme mit dynamischem array in klasse


ThorJulz

Empfohlene Beiträge

Hey,

bin zum ersten Mal hier und brauche dringend eure Hilfe.

Es geht zum folgendes:

Ich soll eine Klasse "Bild" erstellen, in der die private-Attribute hoehe und breite festgelegt sind. Mit jedem erstellen Objekt der Klasse bild soll ein zweidimensionales array erstellt werden, dessen größe zur laufzeit varibabel durch hoehe und breite festgelegt wird. sollte man nichts manuelles eingeben, soll das bild mit 10x10 erstellt werden. außerdem soll nach ende des programms bzw löschen des objektes auch der allokierte speicher für das array mit delete[] gelöscht werden. Das Bild soll erstmal nur grau-werte enthalten ( lauter nullen ) und anschließend mittels einer methode geschwärzt werden ( jede 0 wird auf 1 gesetzt ). Anschließend soll ein copy-konstruktor erstellt werden, der das bild kopiert.

Ich möchte keine expliziten Lösungen ( nur im Notfall ) sondern am Besten einen Erarbeitungsprozess mit euch. Hier was ich schon gemacht habe, allerdings sind noch Fehler drin. Ich bin kein totaler Anfänger, aber ein wenig krank und daher können schön triviale Sachen falsch sein. Zum unteren Code habe ich folgende Fragen, schonmal zur Orientierung:

1. Läuft das Erzeugen/Löschen des Arrays in der Klasse selbst ab oder muss ich das über die von mir geschriebene Methode machen?

2. Ich bin mir ziemlich sicher, dass mein Weg, das zweidim. Array zu erstellen korrekt ist - aber habe ich auch alle Parameter richtig übergeben?

Bevor das Array richtig erstellt wird und ich weiss, wie ich darauf zugreifen kann, kann ich leider die anderen Methoden nicht schreiben. Wäre SUPER wenn ihr mir helft.

LG

Julz

#include <iostream>


using namespace std;



class Bild{


      private:

              int breite;

              int hoehe;

      public:

              int getbreite(){return breite;}

              int gethoehe(){return hoehe;}

              void setbreiteundhoehe(int k, int p){breite = k; hoehe = p;}

              void erzeugearray(int hoehe, int breite);

              void gebearrayaus(int **a, int breite, int hoehe);

              void loeschearray(int **a);

};



void Bild::erzeugearray(int hoehe, int breite){


     int **a = new int* [hoehe];

     for(int i=0;i<hoehe;++i){

             a[i] = new int [breite];

             }

};


void gebearrayaus(int **a, int breite, int hoehe){

     for(int i=0;i<breite;i++){

             for(int j=0;j<hoehe;j++){

                     cout << a[i][j] << endl;

                     }

                     }

};


void Bild::loeschearray(int **a){

     for(int i=0;i<hoehe;++i){

             delete[] a[i];}

     delete[] a;

};


int main(){


    Bild bild;

    bild.setbreiteundhoehe(10, 10);

    cout << "Breite des Bilds in Pixeln: " << bild.getbreite() << endl;

    cout << "Hoehe des Bilds in Pixeln: " << bild.gethoehe() << endl;

    void gebearrayaus(int **a, 10, 10);

    //bild.loeschearray();




    system ("PAUSE");

    return EXIT_SUCCESS;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Läuft das Erzeugen/Löschen des Arrays in der Klasse selbst ab oder muss ich das über die von mir geschriebene Methode machen?

Was heißt für dich "in der Klasse selbst"? Die Methoden sind auch Bestandteil der Klasse.

2. Ich bin mir ziemlich sicher, dass mein Weg, das zweidim. Array zu erstellen korrekt ist - aber habe ich auch alle Parameter richtig übergeben?
Da die Klasse das Array verwalten soll, solltest du das durch eine Membervariable darstellen. Die lokale Variable a in erzeugearray existiert außerhalb der Methode nicht, und der Parameter a in gebearrayaus und loeschearray ist sinnlos.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...