Wie verwende ich "private"?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Smily

Betreff: Wie verwende ich "private"?

BeitragMi, Feb 18, 2009 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Abend,

Eventuell stelle ich mich gerade nur ein bisschen doof an, aber ich bekomms einfach nicht hin, private richtig zu verwenden. Und bei google und im forum fande ich dazu auch nix großartiges.

Kann mir mal jemand einen Codebeispiel geben? Am besten mal für ein Type mit einem Feld auf das von aussen nicht direkt zugegriffen werden kann, aber mittels einer get- und set-methode

Ich habe es so versucht, funktioniert aber nicht.
Code: [AUSKLAPPEN]
Private
Type Test
        Field bla

        Method setBla(x)
                Self.bla = x
        EndMethod
       
        Method getBla()
            Return self.bla
        EndMethod   
EndType


inst:Test = New Test

'Das soll Funktioniern...
inst.setBla(3)
Print inst.getBla()

'Das nicht...
inst.bla = 5
Print inst.bla


Was mache ich falsch?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

kog

BeitragMi, Feb 18, 2009 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Private nützt dir meist nur was in einem Modul. Da kannst du Private Variabeln machen, bzw. bereiche. Und nur das Modul selber kann auf diese zugreifen.
Beispiel
Code: [AUSKLAPPEN]
Private

   Global nurmodul:Int = 1
   
   Type test
      
   End Type
   
Public

   Global kannjeder:Int=1

Firstdeathmaker

BeitragMi, Feb 18, 2009 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Private makes a Constant, Global variable or Function only accessible from within the current source file


Sprich, du kannst innerhalb des files wild rumfragen, aber von einer anderen sourcefile sind die Sachen nicht zu erreichen. Leider gibt es in BMax kein wirkliches Public/Private wie in Java oder C++.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Smily

BeitragMi, Feb 18, 2009 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi, danke für die schnelle Hilfe. Allerdings habe ich immer noch ein kleines Problem.
Ich hab mich grad in das Thema modulerstellung eingelesen, und versucht mein erstes Modul zu schreiben:

Code: [AUSKLAPPEN]
Private
Type TTest_priv
    Field x
EndType

Public
Type TTest Extends TTest_priv
    Method setX(x)
        Self.x = x
    EndMethod
   
    Method getX()
        Return x
    EndMethod
EndType


(Soweit ich das ganz bist jetzt verstanden habe, kann ich nur ganze type-blöcke als private oder public definieren, nicht einzelne felder, deswegen der weg mit zwei types)

Es wird ohne fehler compiliert, aber wenn ich versuche, den Type zu verwenden, kommt eine Fehlermeldung

Code: [AUSKLAPPEN]
Import smily.myfirstmodule

test:TTest = New TTest


Code: [AUSKLAPPEN]
Compile Error: Type 'TTest_priv' not found


in der myfirstmodule.debug.win32.x86.i:
Code: [AUSKLAPPEN]
import brl.blitz
TTest^TTest_priv{  <-- hervorgehobene zeile
-New%()="_smily_myfirstmodule_TTest_New"
-Delete%()="_smily_myfirstmodule_TTest_Delete"
-setX%(x%)="_smily_myfirstmodule_TTest_setX"
-getX%()="_smily_myfirstmodule_TTest_getX"
}="smily_myfirstmodule_TTest"


Wieso nimmt der denn jetzt den type ttest_priv garnicht mehr mit rein?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Dreamora

BeitragDo, Feb 19, 2009 7:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Die klasse ist schon da im Object File. Aber sie ist nimmer in der von dir gecheckten text file denn die klasse ist nicht public also können klassen von aussen auch nicht darauf zugreifen und das können sie für alles was da gelistet wird.
Hab dazu in blitzmax anfangszeiten mal nen artikel geschrieben wie man hiding in modulen handhaben kann / muss.

private heisst: darf nur im gleichen source file verwendet werden, nirgend sonst, also auch nicht von extern instanziert oder sonstwie mit der aussenwelt in relation stehen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group