Methode überschreiben -> Was bedeutet der Fehler?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: Methode überschreiben -> Was bedeutet der Fehler?

BeitragDi, Mai 04, 2010 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.
Ich bin gerade dabei die Wegpunkte zu erweitern.
Dabei habe ich jetzt folgendes Problem:

Ich überscheibe die Create Funktion komplett durch eine neue und bekomme folgenden Fehler angezeigt:

Zitat:
Compile Error: Overriding method differs by type
Build Error: failed to compile F:/BlitzMax Porgramming/WIP/AlienShooter2D/Includes/WaypointClass.bmx


Undzwar in dieser Zeile:

BlitzMax: [AUSKLAPPEN]
Function Create:TStartpoint(px:Int, py:Int, pWavetime:Int, pEnemyamount:Int, pwaveamount:Int, pID:Int = 0)


In der Parentklasse sieht die funktion so aus:

BlitzMax: [AUSKLAPPEN]
Function Create:TWaypoint(px:Int, py:Int, pID:Int = 0)


Was bedeutet die Fehlermeldung also, bzw was mache ich falsch?

Liegt das vielleicht an den Variablen die übergeben werden sollen?
In ner anderen Klasse hat das überschreiben der Create Funktion nämlich funktioniert.

Lg, M0rgenstern

mpmxyz

BeitragDi, Mai 04, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Funktionen/Methoden überschreibst, müssen die gleichen Parameter und Rückgabewerte genutzt werden.
Da das hier nicht der Fall ist, meckert BlitzMax.
mfG
mpmxyz
Edit: Wäre es vielleicht nicht besser, eine eigene Wave-Klasse zu erstellen? Die Daten einer Angriffswelle haben nicht viel mit einem Waypoint zu tun. Du könntest dann für jede Angriffswelle auch mehrere Startpunkte definieren.
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am Di, Mai 04, 2010 21:16, insgesamt einmal bearbeitet
 

Ava

Gast

BeitragDi, Mai 04, 2010 21:14
Antworten mit Zitat
Du kannst Methoden nur mit identischen Eigenschaften überschreiben (Parametern / Rückgabe). Das hast Du nicht getan. Und genau das sagt Dir die Fehlermeldung.

[/Edit] Mal wieder zu spät ... Rolling Eyes
  • Zuletzt bearbeitet von Ava am Di, Mai 04, 2010 21:14, insgesamt einmal bearbeitet

M0rgenstern

BeitragDi, Mai 04, 2010 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm...
Diese Klasse braucht aber diese Attribute. Die alte Klasse braucht das nicht.

Kann ich das umgehen?

Lg, M0rgenstern
 

Ava

Gast

BeitragDi, Mai 04, 2010 21:15
Antworten mit Zitat
Ja, in dem Du verschiedene Methoden verwendest... Rolling Eyes

M0rgenstern

BeitragDi, Mai 04, 2010 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ouch.
Ja stimmt. Dämliche Frage.
Sorry.
Mensch. Der Name Create hat sich so schön für nen Konstruktor angehört.

Vielen Dank.

Lg, M0rgenstern

Artemis

BeitragDi, Mai 04, 2010 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit, das zu Umgehen ist, etwas unschön, einfach den Klassennamen nochmal reinpacken.

Also statt TWaypoint.Create ein TWaypoint.CreateWaypoint.

Bei wxMax wird auch immer eine Funktion Create verwendet. Hier hat Brucey das so gelöst, dass Parent-Klassen, nie alleine erstellt werden, also eigentlich abstrakt sind und daher haben die Parent-Klassen immer eine Create_ Funktion. Ist aber bei Vererbungen, wo man sowohl das Parent als auch das Child erstellt nicht schön, vor allem da bei vielfacher Vererbung so Dinge wie Create___ entstehen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group