basiskonstruktor

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

krux

Betreff: basiskonstruktor

BeitragDi, Apr 03, 2007 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein type, der von einem anderem abgeleitet wurde. Wie kann ich jetzt die Parameter, die ich für die erzeugung meines unterobjekts bokommen habe benutzen, um damit dann den konstruktor des Basis-Typs aufzurufen?

Mein Problem liegt darin, dass ich einen Polymorphen Typ habe, der ber er erstellung gesagt bekommt, zu welcher gruppe er gehört. Dort trägt er sich dann in einer liste ein, und merkt sich den link. Das bedeutet, dass die Liste(n) die die Objekte verwalten nicht im Typ selber sind, sondern auserhalb, was bedeutet, dass ich die eintragung in die Listen nicht mit der New methode erledigen kann. Mit Basiskonstruktoren erhoffe ich mir, dass ich nicht in jeder abgeleiteten klasse neu reinschreiben muss, wie sich das Objekt in die Liste einzutragen hat.

Rone

BeitragDi, Apr 03, 2007 2:24
Antworten mit Zitat
Benutzer-Profile anzeigen
moin,

ich würds irgendwie so probieren...

Code: [AUSKLAPPEN]
Type TObjectManager Abstract 
   
   Global group1List:TList = New TList
   Global group2List:TList = New TList
   
   Function AddObject(obj:TObject, group)
      Select group
         Case 1
            group1List.AddLast obj
         Case 2   
            group2List.AddLast obj
      End Select
   End Function
   
   Function ProcessObjects()
   End Function
   
   Function DrawObjects()   
   End Function
   
   Function DeleteObjects()   
   End Function
   
End Type
'-------------------------------------------------------------
'-------------------------------------------------------------
Type TObject Abstract
   
   Field group
   
   Method Create(group)
      TObjectManager.AddObject(Self,group)   
   End Method
   
   Method Process() Abstract    
   Method Draw()     Abstract
   
End Type
'-------------------------------------------------------------
Type TObjImplA Extends TObject Final

   Field bli
   
   Method CreateImpl1:TObjImplA(group)
      Super.Create(group)
      Return Self
   End Method
   
   Method Process()
      '...
   End Method
   
   Method Draw()
      '...
   End Method
   
End Type
'-------------------------------------------------------------
Type TObjImplB Extends TObject Final

   Field bla
   
   Method CreateImpl2:TObjImplB(group)
      Super.Create(group)
      Return Self
   End Method
   
   Method Process()
      '...
   End Method
   
   Method Draw()
      '...
   End Method
   
End Type


naja, ist irgendwie auch geschmackssache... Basiskonstruktoren in diesem Sinne gibt es meines wissens nicht. Musst halt irgendwie drum herum programmieren...
Wäre schön, wenn man 'new' auch Parameter geben könnte und auch Abstracte Types ein 'new' haben dürften, das aufgerufen wird, wenn man eine Instanz des abgeleiteten Types erstellt... Rolling Eyes

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group