[C++] Wskaźnik do funkcji

0

Witam,
stworzyłem wskaźnik do funkcji i kiedy przypisuje mu adres, kompilator zgłasza błędy,
prosiłbym o poprawienie poniższego fragmentu kodu:

class c{
public:
	int b(){
		return 4;
	}
	int (*wsk)();
	wsk=b;
};

int main(){
	c ob;	
	getch();
	return 0;
} 

Wiem że problem może wydawać się błahy, ale jakoś nie mogę wpaść w czym rzecz.
z góry dziękuje za pomoc i pozdrawiam.

0

Wskaźniki do pokazywania na funkcje wewnątrz klas wyglądają inaczej. Doczytaj.

0

dzięki, poszperałem trochę i teraz mam tak:

 class klasa{
public:
	void f(){
		cout<<"sss";
	}
	void(klasa::*wskfun)();
	void wsk(){
	wskfun=&klasa::f;
	}
	
	
};

int main(){
	klasa k;
	k.wsk();
	k.wskfun;
	getch();
	return 0;
} 

wszystko się teraz kompiluje, problem polega na tym, że w programie nic się nie dzieję, chciałbym żeby po wykonaniu linijki

k.wskfun; 

wywołała się funkcja f() a tym samym na ekranie pojawił się napis 'sss'.
Co robię nie tak??

0

Bo nie tak łatwo się to wywołuje. Pomyśl że ty musisz wywołać tą funkcję przekazując jej jednocześnie obiekt na którym ma pracować.
Zrób tak:

#include <iostream>
using namespace std;

class klasa
{
public:
    void(klasa::*wskfun)();
    void f()
    {
        cout<<"sss";
    }
    void wsk()
    {
        wskfun=&klasa::f;
    }
    void call()
    {
        (this->*wskfun)();
    }
};

int main()
{
    klasa k;
    k.wsk();
    k.call();
    return 0;
}
0

Dziękuje bardzo, mam jeszcze jedno pytanie. Co należy zrobić jeżeli funkcja f() będzie statyczna?

0

Tak jak robiłeś za pierwszym razem.

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