Type "dynamisch" angeben
Übersicht

![]() |
gekkonierBetreff: Type "dynamisch" angeben |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo allerseits!
Entschuldigung wegen des seltsamen Threadtitels, ich wüsste nicht wie ichs anders bezeichnen kann. In folgendem Beispiel habe ich in der Function Create(Param:String) die Zeile wo Local obj:TObj = New TObj steht. Code: [AUSKLAPPEN] Type TObj
Global list:TList Field Test:String Function Create(Param:String) Local obj:TObj = New TObj obj.Test = Param If list = Null list = CreateList() list.AddLast(obj) End Function Method Destroy() list.Remove(Self) End Method Function Debug() For Local obj:TObj = EachIn list Print obj.Test Next End Function End Type TObj.Create("hallo") TObj.Create("welt") TObj.Debug Gibt es hier die Möglichkeit statt TObj anzugeben, dass der eigene Typ verwendet werden soll? Also wenn die Type jetzt z.B. TParticle heisst welches ich von TObj ableite die Liste richtig mit TParticle gefüttert wird? Oder muss ich hier überschreiben? Zuerst suchte ich in der Hilfe bei Self, da bin ich allerdings falsch - das bezieht sich ja auf eine Instanz der Type und nicht die Type selbst. Ich vermute dass es anders nicht gehen wird, oder doch? Vielen Dank im Voraus, Gekkonier (Ich hoffe ich habs halbwegs gut umschreiben können, falls nicht bitte fragen!) |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was spricht denn dagegen, die Funktion einfach zu überladen? | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
gekkonier |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prinzipiell nix, ausser Schreibfaulheit. Ich wollte mir einen Basisdatentyp bauen, der die Listenfunktionalität gleich miteingebaut hat. Ist aber kein Problem in diesem Sinne, ich wollte nur wissen ob das mit hauseigenen Mitteln machbar wäre.
In anderen Sprachen hätte ich unter Umständen zu Makros gegriffen, aber auch nur als Notnagel. Templates gibts in Blitzmax nicht, oder? |
||
![]() |
gekkonier |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay, anders umschrieben gehts so wie ichs eigentlich vorhatte:
Code: [AUSKLAPPEN] Type TObj
Global list:TList Method New() If list = Null list = New TList list.AddLast(Self) End Method Method Destroy() list.Remove(Self) End Method End Type Type tObjderivat Extends TObj Field test:String Function Debug() For Local obj:tObjderivat = EachIn list Print obj.test Next End Function End Type a:tObjderivat = New tObjderivat b:tObjderivat = New tObjderivat a.test = "hallo" b.test = "welt!" tObjderivat.Debug() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es gibt keine Templates, braucht es aber auch nicht.
Reflection und Factory Pattern sind hier mehr als ausreichend. Reflection dabei, weil man, wenn man eine beliebige Objektinstanz hat, auf Basis von dieser eine neue erzeugen kann. (siehe Reflection in der Hilfe) Factory Pattern weil das die Art ist wie man sowas in ner OO Programmiersprache handhabt. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
gekkonier |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich werd mir das näher ansehen. Danke für die Tipps! | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group