ThorJulz Geschrieben 16. Dezember 2010 Teilen Geschrieben 16. Dezember 2010 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; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. Dezember 2010 Teilen Geschrieben 17. Dezember 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.