Vererbungsproblem mit mehreren Dateien

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

ThirstForKnowledge

Betreff: Vererbungsproblem mit mehreren Dateien

BeitragFr, März 28, 2008 9:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo alle zusammen,
ich bin noch ein ziemlicher Anfänger mit BlitzMax und hätte mal eine Frage im Bezug auf die Vererbung von Types.
Theorethisch kann man ja von einem Type T1 (Basisklasse) andere Types z.B.: T2, T3.. ableiten.
Bei mir funktioniert dass aber nur, wenn beide Type Definitionen in einer Datei stehen.
Das ergibt nun folgendes Problem:

Code: [AUSKLAPPEN]

'      test.bmx

superstrict

import "t1.bmx"   ' Basisklasse
import "t2.bmx"   ' abgeleitete Klasse von t1
import "t3.bmx"   ' abgeleitete Klasse von t1

t2:T2                    = new T2
t2.run()


Code: [AUSKLAPPEN]

'      t1.bmx

Type T1

      Method run()

            print "T1"

      End Method

End Type


Code: [AUSKLAPPEN]

'     t2.bmx

Type T2 Extends T1

      Method run()

             print "T2"

      End Method

End Type


Code: [AUSKLAPPEN]

'     t3.bmx

Type T3 Extends T1

      Method run()

             print "T3"

      End Method

End Type


Das erzeugt bei mir den Fehler: "Compile Error Type 'T1' not found!"
Der lässt sich zwar umgehen, wenn man in jede Datei eines abgeleiteten Types die Basisklasse importiert,
aber dass ist unsauber und besonders bei vielen Dateien ziemlich unpraktisch.
Wie es mit der Größe der .exe aussieht, weiß ich nicht, kleiner wird sie dadurch aber bestimmt nicht ..
 

klepto2

BeitragFr, März 28, 2008 9:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wilkommen an Board Smile

Also zu deinem Problem:
Import bedeutet das die importierten dateien für sich alleine kompiliert werden, also angenommen du hast ein riesiges Projekt und benutzt dann Quickbuild dann müssen die importierten files nur bei einer Änderung neu kompiliert werden. Das heißt aber auch, das die einzelnen Dateien keinen wissen voneinander haben.

Ein einfacher Weg wäre, die Imports durch includes zu ersetzen (das hebt aber das schnellere Kompilieren auf) oder in deinem Fall am Anfang von T2.bmx und T3.bmx einfach ein Import "T1.bmx" einbauen.

[Edit]
Die Dateigröße der exe bleibt gleich, da die imports trotzdem nur einmal gespeichert werden. Aber der kompiler weiss zur kompilierungszeit nicht welche Scopes etc in der aktuellen Datei zulässig sind, da wie bereits erwähnt imports für sich alleine kompiliert und später nur verlinkt werden.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

ThirstForKnowledge

BeitragFr, März 28, 2008 9:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh Mann, das ist mir jetzt irgendwie peinlich, ich hatte dachte ich hätte es mit Include probiert ..
Trotzdem vielen Dank für die schnelle Hilfe, ich hatte schon befürchtet, die schönen OOP Vorteile nicht nutzen zu können.

[EDIT]
Kann man Beiträge hier irgendwie als gelöst markieren?

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group