Klassen in mehreren Dateien
-
Hi!
Ich habe es momentan so:
Ihc habe ein Spielbrett.csusing StraßenAns; //StraßenMenü.cs using StraßenVerw; //Straße.cs using Monopoly; //Hauptmenü.cs namespace Spiel { public class Spielbrett : System.Windows.Forms.Form { public class Straßenverwaltung { static KlasseStraßen[] Feld = new KlasseStraßen[40]; public Straßenverwaltung() { #region Straßen //Eingabe der Normalen Straßen (nach der Feldnummern um -1 versetzt) Feld[1]= new KlasseStraßen("Bad Straße" ,0, 1200, 0, 0, false, "40", 5000, 1000, 10000 ,0 ,2); [i]...[/i] #endregion; } } } }
dann hab ich noch die datei Straßen.cs:
namespace StraßenVerw { //Klasse für die Details der Straßen public class KlasseStraßen { #region Variablen private int Besitzer; [i]...[/i] #endregion public string GetName() { return Name; } public int GetPreisHaus() { return PreisHaus; } public KlasseStraßen(string Name,int Besitzer,int Kosten[i]...[/i]) { this.Besitzer=Besitzer; this.Name=Name; this.Kosten=Kosten; this.Haus=Haus; [i]...[/i] } } }
und noch StraßenMenü(ist ein Form, wenn man auf die einzelnen Straßen klickt, öffnet sich der Form mit den entsprechenden Daten.
So, JETZT möchte ich gern, dass das Objekt Spielbrett.Feld i auch vom Spielmenü benutzt/verändert werden kann und.
Wie bekomme ich das hin?Nochmal im normal deutsch:
Wie schaffe ich es, dass 2 *.cs Dateien ein Objekt der gleichen Klasse nebeneinander Lesen bzw. Beschreiben können?
-
Du legst in deiner Spielmenüklasse eine Variable vom Typ Spielbrett an und dann musst du die aus deiner Spielbrettklasse zuweisen. Es werden ja immer Referenzen übergeben und deshalb abeitest du ja immer mit dem gleichen Objekt.
Oder musst direkt mitref
angeben das du die Referenz haben willst und nicht den Wert.
Ich persönlich würde die Klasse Straßenverwaltung nicht in der Klasse Spielbrett definieren, weil du kannst die so nicht direkt erstellen und musst immer umständlich übers Spielbrett gehen.
-
ok, das mit dem ref glaubh ich verstanden zu haben
ich versuche es mal und danach antworte ich nochma
-
........................................
EDIT:
ok, ich hab den fehler oO
stat static XXX hätte ich public nehmen müssen oO misst, warum schreib ich auch grünäugig was ab oO ich bin blöd -.-Jetz kommt jedoch diese fehlermeldung:
Eine nicht behandelte Ausnahme des Typs 'System.NullReferenceException' ist in Monopoly.exe aufgetreten. Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
ich hab bei meiner Spielbrett.cs das ref übergeben
StraßenMenue = new StraßenAnsicht(ref StraßenLi.Feld[2]); //Neues Fenster für StraßenMenü
und bei SpielMenü.cs es in den konstruktor eingegeben:
public StraßenAnsicht(ref KlasseStraßen Objekt) { string X="Hallo"; Straße = Objekt; InitializeComponent(); X=Straße.GetName(); }
Und Bei X=Straße.GetName(); kommt der Fehler auf oO
-
Hallo GR33bo
Ich versuch grad die Klassen in C++ zu verstehen, aber irgendwie bekomm ich´s nicht so richtig hin.
Kannst Du mir mal in einfachen Worten erklären wie die Klassen funtionieren ?Ich hab schon ein paar Bücher durch aber ich kappiers einfach nicht. (Ich glaub langsam ich bin zu dumm dafür).
Im voraus DANKE !!!
Gruß
Thiemo
-
einfach ausgedrückt:
eine Klasse ist wie der Bauplan eines Hauses - hat also Eigenschaften (1 Dach und 4 Wände) und Funktionen (zb Tür kann geöffnet werden). wenn du das Haus bauen willst dann legst du eine Instanz an und hast dann ein Objekt - das Haus. Dieses Objekt hat jetzt die Eigenschaften und Funktionen des Hauses und mit diesem Objekt kannst du nun arbeiten. Willst du eine zweites Haus bauen bildest du einfach wieder ne Instanz dieses Bauplans und fertig ist dein zweites Haus.