OOP - Extends Types Globale Felder zuordnen
Übersicht

![]() |
Der EisvogelBetreff: OOP - Extends Types Globale Felder zuordnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Wieder eine OOP-Frage. Also erstmal ein Code BlitzMax: [AUSKLAPPEN] Type Main So, ich habe in meinem main-Type eine List, in der ich alle Object vom Type main speichere. Jetzt habe ich ebenfalls eine List im Type test, der von main abstammt, in der ich alle test-Objekte speichere. Jetzt erstelle ich ganz viele Types, die alle von main abstammen. Normalerweise würde ich jetzt jeden neuen Type eine neu Liste mittels "Global list:TList=CreateList()" zuordnen. Kann ich das aber auch irgendwie so machen, das ich im main-Type eine Liste anlege, die in jedem Sub-Type dann eine andere Liste des jeweiligen Sub-Types darstellt? Oder generell, dass jedem Subtype automatisch ein Globales Feld zugeordnet wird, dass aber in jedem Sub-Type anders genutzt werden kann? MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach nur in Main die Liste und speichere Deine Einträge hinein. Du kannst dann per for bla:TdeinKlassenname = eachin tmain.liste nur die jeweiligen Subklassenmember durchiterieren. Nachteil: ein Wwenig langsamer, da alle nichtgewünschten Member übersprungen werden müssen, Vorteil: Universell. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist eben das Problem die Geschwindigkeit. In wie fern wird das bemerkbar? | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kann man so pauschal nicht beantworten, das hängt sicher von der Anzahl an Einträgen ab.
Ein Workaround wäre im BasisType ein Array von Listen anzulegen und die Subklassen nur in ein bestimmtes Arrayfeld eintragen zu lassen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja das wär auch ne Möglichkeit, aber dann müsste ich wieder jedem Sub-Type sagen, welches Feld ihm gehört. Dann kann ich auch wieder jedem Sub-Type seine eigene Liste machen. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kannst Du aber ein einziges mal in einer Constante festlegen. Nicht grade der Riesenaufwand. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok also entweder reden wir grade aneinander vorbei, oder ich versteh dich nicht richtig. Kannst du mir kurz nen Code-Bsp geben? | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] SuperStrict
Type TMain Const _numsubs:Int = 2 'wieviele Subtypen gibt es Const _SUBFOO:Int = 0 'nummern der Einzelnen Typen Const _SUBBAR:Int = 1 'dito Global _arrlists:TList[_numsubs] Method New() DebugLog "TMain Constructor called." For Local i:Int = 0 Until _numsubs 'Die Listen werden bei der ersten Benutzung initialisiert If _arrlists[i] = Null _arrlists[i] = New TList End If Next End method End Type Type TFoo Extends TMain Method New() DebugLog "TFoo Constructor called." _arrlists[_SUBFOO].addlast(Self) End Method Function Print() .Print "~nListing all TFoo Instances:" For Local foo:TFoo = EachIn _arrlists[_SUBFOO] .Print "TFoo Instance" Next End Function End Type Type TBar Extends TMain Method New() DebugLog "TBar Constructor called." _arrlists[_SUBBAR].addlast(Self) End Method End Type 'so, wir erstellen ein paar Instancen: For Local i:Int = 0 To 5 New TFoo New TBar Next Ist halt ein recht dreckiger Workaround, aber er tut es. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group