JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=dc1c3beb3a79610103a210482c5321d5Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Adresse einer gebundenen Methode

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 18.12.2004, 21:25    Titel: Adresse einer gebundenen Methode Antworten mit Zitat

Hi,
Ich machs kurz:

Code:

Funktion(&klasse.methode);

geht net weil gegen den Standart is,
Code:

Funktion(&class::methode);

geht auch net, weil das Argument dann class::*void is, und nicht nur void*.

Was geht dann?
Danke, ich hoff man versteht mich auch mit kurzschreibweise, habs grad eilig ^^. In aller eile, danke für die antowrtne, machts gut!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 18.12.2004, 21:42    Titel: Antworten mit Zitat

Gehts vielleicht so?
Code:
Funktion(&(klasse.methode));


Wenn du anstatt einer Referenz einen Zeiger übergeben willst, dann würde es auch einen Fehler geben, wenn dus so schreibst:
Code:
Funktion(*klasse.methode);

Deshalb gehts so:
Code:
Funktion(*(klasse.methode));

oder kurz so:
Code:
Funktion(klasse->methode);

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 10:01    Titel: Antworten mit Zitat

funktion(&(klasse.methode)) geht auch nicht, weil (laut Compiller) Klammern nicht für Adressoperatoren benutzt werden dürfen/können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 10:06    Titel: Antworten mit Zitat

Vlt. hilft dir das
http://www.zfx.info/DisplayThread.php?TID=6257
und das
http://www.function-pointer.org/
ja weiter... =/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 10:48    Titel: Antworten mit Zitat

Nein, leider auch nicht weil darin nur behandelt wird wie man Funktionsreferenzen übergibt. Das Problem bei meinem Beispiel ist aber das es eine Methode is, und irgendwie void* nicht zu class::*void kompatibel ist.

Vlt. bringt ja dei Fehlermeldung was:

error: cannot convert `void (OGL::*)()' to `void (*)()'
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mazze
JLI'ler


Alter: 39
Anmeldedatum: 02.01.2004
Beiträge: 145

Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 11:43    Titel: Antworten mit Zitat

Also wenn du einen Zeiger auf eine Funktion einer Klasse willst, brauchst du ebenfalls einen Zeiger auf ein Objekt der Klasse,so z.B:
http://tutorial.schornboeck.net/meth_zeiger.htm
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 12:58    Titel: Antworten mit Zitat

Nein, mein Problem ist das:

In deinem Beispiel wird der Parameter so definiert:

Methode(void (Klasse::*methode))

Ich habe aber einen Parameter (den ich nicht verändern kann) der so aussieht:

Methode(void *funktion)

-> Also auf Funktionen ausgelegt ist. Wie kann ich dieser Funktion aber statt einer Funktion eine Methode übergeben, also den Typ Klasse::*void in nur *void konvertieren?
Type/Cast geht nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 13:06    Titel: Antworten mit Zitat

Nahar hat Folgendes geschrieben:
funktion(&(klasse.methode)) geht auch nicht, weil (laut Compiller) Klammern nicht für Adressoperatoren benutzt werden dürfen/können.

Ach stimmt...ich hab was überlesen(Ich dachte, du meinst normale Referenzen und nicht Funktionsreferenzen Embarassed ).

Kannst du vielleicht mal den relevanten Code zeigen?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 19.12.2004, 13:22    Titel: Antworten mit Zitat

Im Prinzip wollte ich eien Art openGL Klasse machen, halt alles Grunlegende in eine Klasse das es aufgeräumt is Smile.
Und das Problem ist das ich dafür dieses "Funktionen registrieren" benutze (ist afaik vor allem für C gedacht, deswegen wahrscheinlich auch das Problem mit den Methoden).

glutDisplayFunc(&OGL::DrawGLScene);

Das sieht dann zum Beispiel so aus. Nur eben das es hier immer einen void-Pointer erwartet, und das leider keiner ist.

Ich hab auch schon probeir ob es per Typecast geht, aber (logischer weise) leider net.

im Endeffekt kann ich es auch anderst machen, aber mich würd halt interessieren ob es wirklich nicht geht, auch für die Zukunft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum