Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.11.2009, 23:12

C# array überladen?

hallo. also der titel is vl irreführend...
ich hab eine basisklasse die ein Array von objekten hat...
die Subklassen haben dann auch dieses Array.
Weiters hat die klasse noch ein paar Funktionen und strings.
Alles bis auf das Array lasst sich wunderbar überladen/überschreiben...
aber wenn ich versuch (in einer anderen klasse) auf das allgemeine array
von Basisobjekten (die dann aber zumindest was die strings und so betrifft) eh wunderbar zu Subklassenobjekten werden, zuzugreifen bekomm i an fehler.

Laut debugger sind in den Subklassenarrays richtige elemente drin, aber in da Basisklasse nur null...

i check irgendwie net...
aja is C#

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

17.11.2009, 23:23

Zeig mal etwas code...

3

17.11.2009, 23:52

hier basis :
...public virtual double radius {get;set;}
public Point[] pts = new Point[20];...

hier abgeleitete klassen:
..override public double radius { get; set; }
new public Point[] pts;..

nachher kommen dann in das Point array einfach Objekte mit x,y wert rein...

------------------------
dann hab ich noch eine klasse die mir listen erstellt:
GraphicObject[] list = new GraphicObject[21]; hat die drinnen stehn...

und die add methode:
public void AddToList(GraphicObject obj)
{
if (elem_count < list.Count())
{
list[elem_count] = obj;
}
elem_count++;
}

so funktioniert... wenn ich mir dann nur die namen der elemente ausgeben lass, dann sind die korrekt... jedes element sollte jetzt eigene punkte haben. ABER

bei so einem aufruf z.b.:
Console.WriteLine(list[0].pts[0].XCoord); gibt mir eine null.irgendwas exception... und der debugger sagt: dass in list[0].pts 20 nulln drin sind... und genau die leg ich ja in der basis an... im debugger kann ich mir aber als unterpunkt zu meinem listen objekt aber auch mein richtiges pointarray anschaun... aber is eben ein unterpunkt ...

und ich hab keine ahnung... der compiler lasst mir override nicht zu... steht bei arrays gehts nicht... new hab ich schon genommen, ändert aber gar nix an der situation...

lg

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

18.11.2009, 08:30

Das ist kein Code, das is ne regelrechte Krankheit! Kannst du das Ganze mal bitte in Codetags packen und ein vollständig, funktionsfähiges Beispiel zeigen, dass den Fehler repräsentiert? Ansonsten kann man hier nur raten.

5

18.11.2009, 09:24

sry... naja es sind insgesammt sicher 4-500 zeilen und die noch in 7 dateien. woch euch nicht alles hinklatschen...

aber werd no mal schaun...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

18.11.2009, 10:25

Ich versteh irgendwie absolut nicht was du damit bezwecken willst dieses Array in der Subklasse doppelt zu haben!?

7

18.11.2009, 11:08

ich hab die basis graphicobject und dann einige unterklassen, die dann echte zeichenbare objekte sind...
und die leit i halt hab. in meinem handler, der mir alles rechnet und so weiß i aber zerst net welches objekt des sein wird und daher hab i halt ein array von der basis angelegt und da sind dann im endeffekt die richtigen subklassen drin....

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

18.11.2009, 11:15

Zitat von »"AlymcGeel"«

in meinem handler, der mir alles rechnet und so weiß i aber zerst net welches objekt des sein wird und daher hab i halt ein array von der basis angelegt und da sind dann im endeffekt die richtigen subklassen drin....


Ja aber so wie dus oben beschrieben hast sind die Arrays in den Subklassen!?

9

18.11.2009, 11:19

naja die subklassen haben arrays in denen die koordinaten in form von Point klassen sind... und darum gehts... auf diese Punkte kann i net zugreifen in den subklassen, sondern nur auf dieses Punktarray der Basis...

und wenn i des punktarray aus der basis streich, dann bekomm i im systemhandler so und so a error meldung weil i da ja eigentlich a array von graphicobjects hab und die dann ja kein Pointarray haben...

sondern eben nur die Subklassen und i zerst aber net weiß welches objekt i erstellen werd...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

18.11.2009, 11:26

Naja, du hast da ganz klar ein Designproblem. Überleg mal ob das so sinnvoll ist festzulegen dass jedes Objekt durch eine Reihe von Punkten bestimmt ist und der Handler erst wieder den genauen Typ jedes Objektes kennen muss...

Werbeanzeige