Klonen von nicht primitiven Datentypen

raz0light

Grünschnabel
Hallo Leute,

Ich muss für eine neue Hausaufgabe einen Algorithmus schreiben, der ein Sokoban-Level automatisch löst. Als Vorgabe ist Rekursion vorgeschrieben und auch eine clone() Methode.

Aus vorherigen Aufgaben ist eine Abtrennung des Levels in 2 Arrays Pflicht gewesen. Da ist dann das Problem. Eines dieser Arrays ist ein char-Array und eines ist ein Array vom Typ moveableobjects (weil eine Klasse so heißt)
Mein Bruder meinte, dass die clone-Methode nur bei primitiven Datentypen funktioniert, und er nicht weißt, wie man das sonst machen soll..

Kann mir/uns einer helfen?

Mit freundlichen Grüßen
raz0light
 

sheel

I love Asm
Hi

gib der Klasse einen Copykonstruktor "public moveableobjects(moveableobjects obj)", also einen Konstruktor der eine bestehende Instanz als Parameter bekommt.
Drin kopierst du alle Variablen von obj in das neue Objekt rein, und zwar so dass sie komplett unabhängig sind: Für char, String usw. einfach mit "=", bei Klassenobjekten würde das aber zwei moveableobjects mit dem selben anderen Objekt innen machen, also je nachdem was die Klasse ist irgendwie passend anders (zB. auch mit einem Copykonstruktor).

Wenn dann ein Array kopiert werden soll, ein zweites Array der selben Größe anlegen (einfach mit new), und in einer Schleife dann "new = new moveableobjects(old);"
 

Neue Beiträge