wskaźnik na funkcje

Odpowiedz Nowy wątek
2005-04-03 10:57
sekato
0

mam kase bee
class bee
{
// w srodku mam wsk na funkcje
bool (bee::*wsk)(DWORD ala);

};

i teraz chce wywołać tą funkcje w innej funkcji innej klasy

bee.wsk(ela); dlaczego wyskakuje mi
error C2064: term does not evaluate to a function taking 1 arguments

Pozostało 580 znaków

2005-04-03 13:13
0

Uff, niezły z Ciebie sekatoR :D
Teraz to hardcore dowaliłeś.. To nie jest funkcja! To jest metoda (funkcja składowa), która jest zupełnie inaczej traktowana.
Po drugie: samo

wsk

jest też... SKŁADOWĄ klasy, która jest wskaźnikiem składowej! A składowe wymagają specjalnego traktowania :>

#include <iostream>
using namespace std;
class bee
{
public:
    bee() { w = &bee::test; }
    bool test(int i) { cout<<"test with "<<hex<<i<<endl; return true; }
    bool (bee::*w)(int ala);
};

int main()
{
    bee a;

    //!! to jest prawidłowe wywołanie !!
    (a.*(a.w))( 0xdeadbeef );
    //!!

    // Mozna lepszy hardcore przez wskaznik wskaznika :)
    // deklaracja: //
    typedef bool (bee::*mptr)(int); // typ taki jak 'w' klasy bee - wskaznik metody bool (int)
    // wskaznik skladowej klasy,
    // ktora jest wskaznikiem skladowym klasy bee
    mptr bee::*wptr = &bee::w;
    /////////////////

    // dereferencja: //
    mptr b = a.*wptr;
    (a.*b)( 111111 );
    // albo
    (a.*(a.*wptr))( 222222 );
    ///////////////////
}

Po trzecie: nie wiem jak sobie poradzi z tym VC++.
Po czwarte: zmień projekt...


Pozdrawiam, /\/\aRC!||Ec!
Czy wiesz co Twój KOD robi w nocy?

Code::Bollocks ;-P : eof()/feof(), srand()/rand(), fflush(), string, float (0.1), scanf(), getline(stream,string).

Lamer captured...
System ready.
_
:-P

Pozostało 580 znaków

2005-04-05 10:08
0
sekato napisał(a)

bool (bee::*wsk)(DWORD ala);

a po co operator zasiegu 'bee::' ?


Pozostało 580 znaków

2005-04-06 17:42
0
vixen03 napisał(a)
sekato napisał(a)

bool (bee::*wsk)(DWORD ala);

a po co operator zasiegu 'bee::' ?

...bo to ma być SKŁADOWA klasy?! :P


Pozdrawiam, /\/\aRC!||Ec!
Czy wiesz co Twój KOD robi w nocy?

Code::Bollocks ;-P : eof()/feof(), srand()/rand(), fflush(), string, float (0.1), scanf(), getline(stream,string).

Lamer captured...
System ready.
_
:-P

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0