Überprüfen ob Objekt nicht gleiches Objekt ist.
Übersicht

![]() |
M0rgensternBetreff: Überprüfen ob Objekt nicht gleiches Objekt ist. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute.
Ich hab mal wieder ne kleine Frage zu BMax. Undzwar: Ich will ne Funktion schreiben, die beim erstellen einer neuen Klasseninstanz die Koordinaten überprüft und mit allen anderen Instanzen der Klasse vergleicht und die neue INstanz gegebenenfalls versetzt. Jetzt darf ich aber diese neue Instanz nicht mit sich selbst vergleichen. Nur weiß ich nicht, wie genau ich das schreibe. Meine Methode sieht momentan so aus: BlitzMax: [AUSKLAPPEN] Method SetAtPlace() Vielleicht kann mir jemand helfen, Lg, M0rgenstern. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
'self' sollte dir da helfen:
if base <> self then ... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja Okay. Das ist es.
Dankeschön Ne andere Frage: Ich möchte das neu erstellte Objekt direkt löschen, wenn es 5 mal am falschen Platz ist. Aber ich kann den Destruktor nicht Aufrufen. Werden mit Self.delete() noch mit Delete(Self) noch mit Delete() Self. Hier ist die Methode: BlitzMax: [AUSKLAPPEN] Method SetAtPlace() Oder muss ich aus der Methode ne Funktion machen und das Objekt dann ausserhalb löschen? Also, wenn die funktion nen bestimmten Wert ausgibt? Lg, m0rgenstern |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst in BM kein Objekt per Hand löschen. Es reicht, wenn du alle Verweise darauf löschst -> aus AllBases austragen und fertig, den Rest geschieht automatisch. | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Objekt wird automatisch gelöscht, sobald keine Referenz mehr darauf zeigt.
Wenn du es also löschen lassen möchtest, muss du es z.B. aus allen Listen entfernen. Der Garbage Collector macht den Rest und ruft "Delete" auf. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso. Das ist gut zu wissen.
Ich bin das objektorientierte programmieren mit pascal aus der schule gewohnt. Dort gibt es einen solchen Collector nicht. Deshalb rufe ich den Destruktor immer von Hand auf. Aber rein aus Interesse: Wie rufe ich in Bmax den Destruktor auf? Vielen Dank für eure Hilfe. Lg, M0rgenstern. |
||
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kurz und knapp: Gar nicht. Mit ein wenig Umgewöhnung kommst du schon mit dem GC klar und ihr werdet beste Freunde. ![]() Du kannst allerdings in Types die Methode "Delete()" definieren, die dann vor dem Löschen aufgerufen wird. |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, das ist komisch.
Im OOP Tutorial stand, dass das eine eigene Methode von jedem Type ist, genau wie New(). Dann werd ich den halt von Hand schreiben und das löschen der INstanz aus der Liste in den Destruktor einfügen. Vielen Dank euch allen. Lg, M0rgenstern |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist sie ja auch, aber sie löscht eben nicht die Instanz des Objektes sondern dient dazu eventuelle Verlinkungen, die auf die Instanz zeigen und von der Instanz wegzeigen, zu löschen damit der GC die Instanz komplett löschen kann. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group