Module und ihre Transparenz

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Trust

Betreff: Module und ihre Transparenz

BeitragMo, März 25, 2013 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ist es irgendwie möglich, einen Typenbezeichner für den Nutzer des Moduls sichtbar zu machen, ohne das die ganzen Membervariablen des Types ebenfalls sichtbar sind?


BlitzMax: [AUSKLAPPEN]

Public ' <- Das geht


Type TFoo

Private ' <- Das geht leider nicht

Field _x:Float
Field _y:Float

Method foo()
'do something
End Method

End Type
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

d-bug

BeitragMo, März 25, 2013 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, leider ist das nicht möglich. Wurde schon vor zig Jahren bei Mark angeprangert und nie umgesetzt.

Was du allerdings machen kannst:

BlitzMax: [AUSKLAPPEN]

Type TFoo Extends TPrivateFoo

End Type

Private
Type TPrivateFoo
Field x:Float
Field y:Float

Method foo()
'...
End Method

End Type
Public


Dann ist TFoo sichtbar, aber TPrivateFoo nicht. Solange du alle privaten Variablen in TPrivateFoo sammelst sollte das auch funktionieren.

Trust

BeitragMo, März 25, 2013 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja so habe ich es jetzt auch versucht gehabt.

Nur kommt bei mir dann ein compilererror, dass "TPrivateFoo" nicht gefunden wurde.

Wenn ich den reinen Source des Modules teste via Include, dann funktioniert alles.
Das kompilieren des Moduls funktioniert auch.

Aber sobald ich dann das fertige Modul via Import in einen Testcode einbinden möchte und diesen Testcode dann zu Compilieren versuche, kommt die Fehlermeldung, dass mTPrivateFoo bzw. "mTEntity" nicht gefunden wurde.
Am Testcode kann es nicht liegen da dieser minimalistisch ist:
BlitzMax: [AUSKLAPPEN]
SuperStrict


Import MF.SimpleRts' < - Das Modul


Repeat


Until AppTerminate()



Hier der log:
Code: [AUSKLAPPEN]
Building untitled1
Compiling:untitled1.bmx
Compile Error: Type 'mTEntity' not found
[C:/BlitzMax/mod/mf.mod/simplerts.mod/simplerts.debug.win32.x86.i;52;1]
Build Error: failed to compile C:/BlitzMax/tmp/untitled1.bmx
Process complete
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

d-bug

BeitragMo, März 25, 2013 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Komisch, bei mir hats funktioniert!
Hast du evtl. irgendwo ein Public vergessen? Es reicht nicht vor TPrivateFoo ein Private zu setzen, du musst es auch wieder mit Public aufheben!

Trust

BeitragMo, März 25, 2013 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja habe ich.

Also ich habe alles in TPrivateFoo "reingepackt" was Private sein soll, Methoden und Field-Variablen.

Dann habe ich TFoo von TPrivateFoo abgeleitet, und in dieser ist ausschließlich nur die Create-Function um eine Instanz von TFoo zu erstellen.

Vor TFoo steht Public und vor TPrivateFoo steht Private.

BlitzMax: [AUSKLAPPEN]
Private
Type TPrivateFoo
' Jedemenge Fields

' Jedemenge Methods

End Type

Public
Type TFoo Extends TPrivateFoo
' Nur eine Create-Funktion
End Type
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group