wykorzystanie operatora jako wskaźnika do funkcji (metody)

0

Cześć,
mam następujący problem:
Mam klasę, która ma 3 funkcje (metody).
Chciałbym zrobić wskaźnik do jednej z tych metod tak, by każdy obiekt wywoływał wybraną funkcję.
Po drugie chciałbym, żeby owa funkcja nazywała się *operator ** - tzn. żeby wykonując taką operację:

Klasa klasa;
double wynik = klasa*3.0; //wywołanie wybranej funkcji przyjmującej 1 parametr typu double i zwracającej double.

No i pytanie czy tak się da, a jeśli tak to jak to zrobić?
Poniższy kod wykłada się przy próbie "mnożenia" tzn. wywołania owej wybranej funkcji.

class Klasa1
	{
	public:
		double fun1(double);
		double fun2(double);
		double (Klasa1::*operator*)(double);
		void set_wsk(int fun_type)
			{
			switch(fun_type)
				{
			case 0:
				operator* = &Klasa1::fun1;
				break;
			case 1:
				operator* = &Klasa1::fun2;
				}
			}
		void check()
			{
			double x = (*this)*2.0; //to nie działa! Dlaczego?!
			}
	};


class Klasa2
	{
	public:

	Klasa1 klasa1;
	void fun()
		{
		double x = 0.0;
		x = klasa1*3.0; //to również nie działa! Dlaczego?!
		}
	};
1

zrób tak:

	double (Klasa1::*mnozenie)(double);

	double operator*(double a)
	{	
	    return (this->*Klasa1::mnozenie)(a);
	}
0

Super, dzięki!
Tego mi właśnie brakowało ;-)

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