Verweis auf Klasse?
Übersicht

![]() |
FetzeBetreff: Verweis auf Klasse? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Hat jemand von euch ne Ahnung, ob und wenn ja, wie ich auf eine Klasse als ganzes verweisen kann? Vielleicht irgendeine Pointer-Spielerei? Das Problem ist folgendes: Ich habe in mehreren Container-Types dieselben globalen Variablen. Etwa so: Code: [AUSKLAPPEN] Type Blib Global sNameList:String[] End Type Type Plup Global sNameList:String[] End Type sNameList ist hier nur ein Beispiel. Ich würde nun gerne in einer Variable speichern, aus welchem der beiden Container-Types die globalen ausgelesen werden sollen, etwa so: Code: [AUSKLAPPEN] MyType:Type = Blib MyType.sNameList[]... usw. Das funktioniert aber nicht, wie eigentlich auc hvorherzusehen war. Lasse ich ":Type" weg, beschwert sich der COmpiler, er könne "Type" nicht in "Int" umwandeln. Schreibe ich es hin, beschwert sich wiederum der Teil des Compilers, der Keywords erkennt: Er erwartet hinter den Keyword "Type" jedenfalls kein "=". Natürlich habe ich mir bereits überlegt, einfach beide Klassen von einer Oberklasse erben zu lassen. Aber leider müsste ich dann die benötigten Globalen bereits in der Oberklasse definieren, was zur Folge hat, dass der Variableninhalt in beiden Tochterklassen gleich ist, da Bmax sie nun gleichsetzt. Ich könnte natürlich auch meine Arrays als Felder einer Klasse definieren, von der ich so viele Objekte erstelle wie ich unterschiedliche Container brauche. Natürlich ginge das. Das ,was mich daran wiederum stört, ist, dass es unschön programmiert wäre. Kann man das nicht irgendwie anders realisieren? |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ich könnte natürlich auch meine Arrays als Felder einer Klasse definieren, von der ich so viele Objekte erstelle wie ich unterschiedliche Container brauche. Natürlich ginge das. Das ,was mich daran wiederum stört, ist, dass es unschön programmiert wäre. Kann man das nicht irgendwie anders realisieren?
Ich glaub das geht nicht anders, da ein Type selber kein Objekt ist. Da lässt sich auch nichts mit Pointern machen. Code: [AUSKLAPPEN] Type globals Field sNameList:String[] Function LoadFromIni:globals(file:String) ... End Function End Type Local blib:globals = globals.LoadFromIni("blib.ini") Local plup:globals = globals.LoadFromIni("plup.ini") Local aktuell:globals = blib Print aktuell.sNameList[0] Also ich finde das kommt etwa aufs selbe, wieso sollte das unschön sein? ![]() |
||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Unschön, weil ich es bisher so gehandhabt habe, dass jeder geladene Objekttyp jeweils in Form von globalen in der entsprechenden "Ingame"-Klasse gespeichert wird. Jetzt habe ich aber eine Ingame-objek, des entweder zu Objekttyp 1, zu Objekttyp 2 oder zu Objekttyp 3 verweisen kann. Einfach unschön, aufgrund der logischen zugehörigkeit und meienr bisherigen Codestruktur.
Aber das hat sich erledigt, ich hab alle 3 Objektverweise eliminiert, indem ich die drei Objekttypen zu einem zusammengefasst hab. Ist im Endeffekt sogar besser. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielleicht ist das eine Möglichkeit für dich?
Bin mir net sicher ob ich deine Zielsetzung wirklich richtig verstanden habe. Code: [AUSKLAPPEN] Type Base 'globals hier für alle types end type type ext1 extends Base ' kann auch auf die Base globals zugreifen als obs eigene wären ' eigene globals end type type ext2 extends base ' kann auch auf die Base globals zugreifen als obs eigene wären ' kann jedoch nicht auf ext1 globals zugreifen oder umgekehrt end type |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, naja, theoretisch schon, ja. Aber das ganze hat sich ohnehin erledigt, mittlerweile | ||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
etwa so?
Type test Global array[] EndType For i=1 to test.array.length Print test.array[i-1] Next |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nope, ic hwollte ja nicht test, sondern eine klasse, die in eienr Variable angegeben wird.. Aber wie gesagt: Es hat sich erledigt *g* | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group