Vorneweg ich rechne damit, dass ich...
a)...die Sache verkompliziere
b)...die Lösung in meiner Unfähigkeit einfach übersehen habe.
Dafür möchte ich mich dann auch entschuldigen
Also zu meinem Problem oder besser gesagt zur Ausgangssituation:
Ich habe zwei Klassen, die noch fast nichts beinhalten(wird auch nicht viel, da es mein ersten richtiges Programm mit Lazarus ist
unit uspieler;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TSpieler=class
private
FGeneral:String;
public
constructor create(general:String);
property General:String read FGeneral;
end;
Nun wie man sehen kann steht das ganze noch am Anfang. Folgendes Problem ergibt sich dann aber bei der Verwendung:unit land;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, uspieler;
type
TLand=class
private
FName:String;
FEinheiten:Integer;
FBesatzer:TSpieler;
public
constructor create(name: String);
property Name:String read FName;
property Einheiten:Integer read FEinheiten write FEinheiten;
property Besatzer:TSpieler read FBesatzer write FBesatzer;
end;
In einer anderen Klasse wird mit zwei Instanzen von TLand(Angreifer,Verteidiger) gearbeitet, die jeweils eine Referenz auf eine andere Instanz von TSpieler(haben keine Namen, kommen aus einem Array) enthalten. Problem ist, dass ich nun die Referenz der ersten Instanz von TLand(Verteidiger) mit der von Angreifer überschreiben.
Verteidiger.Besatzer:=Angreifer.Besatzer;
Würde nun eine Referenz herstellen, somit wären die FBesatzer von beiden Instanzen immer gleich, das darf es aber nicht sein, da Angreifer und Verteidiger per Nutzereingabe aus einem Array of TLand (enthält im Moment nur 2Elemente, damit ich es einfacher testen kann) ausgewählt werden und dann somit ständig irgendwelche falschen FBesatzer geändert werden würden. Ich brauche daher einen Weg um die Referenz von Verteidiger mit der Referenz von Angreifer zu überschreiben.
Als eine Alternative hätte ich die Idee, dass TLand statt einer Referenz einen String bekommt, mit dem die richtige Instanz von TSpieler aus einem Array identifiziert werden kann, aber da weiß ich nicht, ob das nicht vielleicht zu kompliziert wird, da sich damit mindestens eine Prozedur befassen muss.
Sollte meine Frage totaler Blödsinn sein, tut es mir natürlich Leid
PS: Ich habe die verarbeitende Klasse extra nicht eingefügt, da ich an dieser gerade arbeite und daher ein solches Chaos herrscht, dass ich hier niemandem zumuten möchte