Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

llennard

Frischling

  • »llennard« ist der Autor dieses Themas

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

1

25.06.2005, 14:51

Funktionszeiger auf Methoden

Hallo!

Wie kann ich Zeiger auf Methoden erstellen?

Brauch ich weil die Funktion tbDoMessageLoop ja funktionszeiger braucht.

So weit bin ich gekommen:

main.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCommandLine,
                   int iShowCommand)
{

    ...

    // Nachrichtenschleife betreten


    tbDoMessageLoop(CGame::Instance()::Move, CGame::Instance()::Render);

                ...

    return 0;
}


CGame.h:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class CGame
{
private:
    CGame() {}
public:
    static CGame& Instance()
    {
        static CGame TheOneAndOnly;
        return TheOneAndOnly;
    }   

         tbResult Move(float fTime);
         tbResult Render(float fTime);
};


Was hab ich falsch gemacht?

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

2

27.06.2005, 12:52

ein Methodenzeiger hat z.B. den Typ "tbResult CGame::*(float)", ein Funktionszeiger den Typ "tbResult (*)(float)". Diese sind nicht kompatible. ein Methodenzeiger braucht immer ein Objekt, auf dem er aufgerufen wird (intern dann der this-Zeiger).

Bist du sicher, dass du ein Singleton brauchst? In deinem Beispiel hat es überhaupt keine Memberwariablen und wäre demzufolge ziemlich sinnlos. Statische Methoden würden den selben Zweck erfüllen und sind zudem zu Funktionszeigern kompatibel.

Quellcode

1
2
3
4
5
6
7
8
class CGame 
{ 
private: 
   CGame() {} 
public: 
   static tbResult Move(float fTime); 
   static tbResult Render(float fTime); 
};
Why is 6 afraid of 7?
Because 7 8 9

llennard

Frischling

  • »llennard« ist der Autor dieses Themas

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

3

27.06.2005, 19:22

Danke, alle!


Aber:
wie sieht der Funktionszeiger bei einer Statischen Methode aus?



[list]
Why is 6 afraid of 7?
Because 7 8 9
[/list]Hää? was soll das heißen? :(

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

27.06.2005, 23:43

Why is 6 afraid of 7?
Because 7 ate 9

llennard

Frischling

  • »llennard« ist der Autor dieses Themas

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

5

28.06.2005, 10:34

Danke.
Aber der obere Teil?!

Oder kann man da gar keinen Funktionszeiger erstellen?

6

28.06.2005, 10:58

why is six afraid of seven
because seven ate nine.....

llennard

Frischling

  • »llennard« ist der Autor dieses Themas

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

7

28.06.2005, 16:47

Danke danke, hab schon verstanden! ;p

Aber mit "oberer Teil" meine ich:

Zitat von »"llennard"«


Aber:
wie sieht der Funktionszeiger bei einer Statischen Methode aus?

8

28.06.2005, 18:43

ach lol ich hatte gar nicht gesehen das 77 schon eine antwort gegebne hatte.
SRY

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

9

29.06.2005, 13:12

Zitat von »"llennard"«


wie sieht der Funktionszeiger bei einer Statischen Methode aus?

genauso, wie bei einer globalen Funktion.
Why is 6 afraid of 7?
Because 7 8 9

Werbeanzeige