ich erstelle in einer Routine ein Objekt einer Klasse, dass ich dann in ein Cell Array speichere. Die Erstellung des Objekts läuft über eine Schleife, die immer weiter neue Objekte erstellt. Ich möchte dem Objekt nur einen Hilfsnamen geben, bis es im Cell Array gespeichert ist und den Namen nicht in der Schleife hochzählen.
Das Problem ist jetzt, dass er jedesmal bei der Erstellung eines neuen Objektes die alten im Cell Array aktualisiert und die Werte des neuen Objektes zuweist. Wie kann ich das verhindern?
es wäre gut, die Fragen möglichst konkret zu stellen und am besten mit einem Code-Beispiel die Problematik darzustellen.
Meine Vermutung ist, dass du mit Handle-Klassen (vererbt von Klasse Handle) arbeitest und Anweisungen der Form instanz2=instanz1 verwendest. Da Handle-Klassen mit Referenzen arbeiten, wird dann mit instanz1 auch instanz2 automatisch mitgeändert und umgekehrt.
Ist das soweit richtig?
Kann sein, dass das Handle Klassen sind. Ich bin noch recht neu im Umgang mit objektorientierter Programmierung in Matlab. Ein Codebeispiel lässt sich schlecht posten, aber ich kann nochmal versuchen grob zu umreissen was passiert.
Das Objekt wird erstellt => Übergabe an Methode 'Berechnung' => Methode 'Berechnung' berechnet Größen und schreibt sie ins Objekt => Methode 'Berechnung' gibt Objekt zurück => Objekt wird in Cell Array gespeichert => Schleife wird erneut durchlaufen (Objekt wird mit gleichem Namen wieder erstellt, usw.)
Nach mehrmaligen DUrchlauf der Schleife habe ich nur identische Objekt im Cell Array.
du hast ja dein Cell Array mit den Objekten. Ist sicher gestellt, dass die Berechnungsmethode auch wirklich nur auf den Inhalt einer Zelle und nicht etwa das gesamte Cell Array von Objekten angewendet wird?
und dabei werden dann wirklich Zellen geändert, die nicht angesprochen werden? Kann ich mir so fast nicht vorstellen.
Ich fürchte, dass zumindest ich nicht weiterhelfen kann, ohne wirklich ein komplettes (evtl. vereinfachtes) Beispiel zu sehen, an dem das Problem auftritt.
Jetzt klappts soweit. Vorher wurde das solobj einzeln erstellt, berechnet und dann an eine Stelle im Cell Array zugewiesen.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.