Deutsch
Forum

Methoden anderer Objekte eigene Eigenschaften übergeben

 

Nico
Madysa
Und schon wieder ich ...

Ich weiß nicht, ob ich an mir oder an XProfan zweifeln soll.
Folgende Situation: Ich habe zwei Objekte verschiedener Klassen. Das Objekt Du# erhält das Objekt Ich# als Parameter und ruft dessen Methode auf. Dabei übergibt Du# der Methode von Ich# eine eigene Eigenschaft als Parameter.
KompilierenMarkierenSeparieren
 {$iq}
Class Nummereins = a&,GetA@

proc Nummereins.GetA

    parameters einezahl&
    return .a& * einezahl&

endproc

Class Derandere = #b&,Multi@

proc Derandere.Multi

    parameters Objekt#
    .b& = 14
    return Objekt#.GetA(.b&)

endproc

declare Ich#,Du#
Dim Ich#,Nummereins
Dim Du#,Derandere
Ich#.a& = 3
cls
print Du#.Multi(Ich#)
waitinput
Dispose Ich#,Du#
end

Mein Problem: Sobald die Eigenschaft, die dem Parameter-Objekt übergeben wird, privat ist (so, wie es sich bei ordentlicher OOP gehört), knallt es. (Kein Zugriff auf geschützte Eigenschaft) Ich vermute, dass XProfan Probleme mit irgend einer Form von Stack hat. Gibt es eine Möglichkeit, das Problem zu umgehen oder zu beheben?

Gruß,

Nico
 
Nico Madysa
19.06.2010  
 




RGH
Hallo,

Dein Problem hängt damit zusammen, dass XProfan den Parameter .b& erst in der Zeile "Parameters" auswertet ... und da ist der Zugriff auf geschützte Eigenschaften eines anderen Objektes nicht möglich.
Das kannst Du umgehen, indem Du eine lokale Variable verwendest, die Du als Parameter übergibst.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
20.06.2010  
 




Nico
Madysa
Ja, so was habe ich vermutet. Habe auch gerade festgestellt, dass es auch funktioniert, wenn man eine (öffentliche) Gettermethode übergibt.
KompilierenMarkierenSeparieren
Class Nummereins = a&,GetA@

proc Nummereins.GetA

    parameters einezahl&
    return .a& * einezahl&

endproc

Class Derandere = #b&,GetB@,Multi@

proc Derandere.GetB

    return .b&

endproc

proc Derandere.Multi

    parameters Objekt#
    .b& = 14
    return Objekt#.GetA(.GetB())

endproc

declare Ich#,Du#
Dim Ich#,Nummereins
Dim Du#,Derandere
Ich#.a& = 3
cls
print Du#.Multi(Ich#)
waitinput
Dispose Ich#,Du#
end

Danke für die schnelle Antwort, Roland.

Gruß,

Nico
 
Nico Madysa
20.06.2010  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.374 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Nico Madysa (2x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie