[Monkey] Funktionsüberladung

Übersicht Andere Programmiersprachen Beginners-Corner

Neue Antwort erstellen

Midimaster

Betreff: Funktionsüberladung

BeitragMi, Jul 18, 2012 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
für meine GUI wäre eine Funktionsüberladung sehr hilfreich. Aber irgendwie will das nicht laufen. Was mache ich denn da falsch?

BlitzBasic: [AUSKLAPPEN]
Global B:BasisEx= New BasisEx
....
Class Basis
Method Drucken:Void(X%)
DrawText "Basis",100*X,120
End Method
End

Class BasisEx Extends Basis
Method Drucken:Void(X%,T$)
DrawText "Extends" + T ,100,100
Super.Drucken 2
End Method
End
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Nova

BeitragMi, Jul 18, 2012 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei BlitzMax müssen überschriebene Methoden die gleichen Parameter haben. Wie sieht das bei Monkey aus?
Wird irgendeine Fehlermeldung ausgegeben oder wie äußert sich "irgendwie will das nicht laufen"?
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

Midimaster

BeitragMi, Jul 18, 2012 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
genau, er sagt mir, dass die Anzahl der Parameter nicht stimmt. Aber genau das wäre ja, was Monkey angeblich kann. "Overriding method does not match any overridden Method". Bei gleicher Anzahl Parameter geht es natürlich, aber das wäre ja nix besonderes....
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

FireballFlame

BeitragMi, Jul 18, 2012 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Nova: Er will die Methode überladen. Nicht überschreiben.

Midimaster: Geht es denn, wenn du eine von den Methoden verschiebst, sodass beide in derselben Klasse stehen? Ich kenne mich mit Monkey zwar nicht aus, aber kann es sein, dass du für die Überladung noch ein extra Schlüsselwort o.ä. brauchst?
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Farbfinsternis

BeitragMi, Jul 18, 2012 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Global B:BasisEx= New BasisEx


Sowas gibt es in Monkey nicht. Alles wird in Main() gestartet und dann mit Klassen definiert.
Farbfinsternis.tv

Farbfinsternis

BeitragMi, Jul 18, 2012 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ... folgendes...

Du kannst innerhalb einer Klasse Methoden überladen, Du kannst sie aber nicht in einer abgeleiteten Klasse überschreiben. Wenn Du also eine Methode mit einem Parameter anlegst, kannst Du in einer abgeleiteten Klasse nicht plötzlich zwei Parameter definieren. Wenn Du das willst musst Du in der Basis-Klasse eine virtuelle Methode anlegen, allerdings greift dann "Super" nicht mehr.
Farbfinsternis.tv

Farbfinsternis

BeitragMi, Jul 18, 2012 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Triple Post ... bestimmt werde ich gleich verbannt ...

Habe es selbst nicht geschafft Dein Beispiel zum Laufen zu bewegen und nun im engl. Forum nachgefragt ... mal gucken.
Farbfinsternis.tv

Xeres

Moderator

BeitragMi, Jul 18, 2012 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du weißt, wie du dich verhalten sollst, warum tust du's dann trotzdem nicht?
Editieren funktioniert hier wie überall auch und innerhalb von 20 Minuten geht der Nachtrag wohl kaum unter...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group