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?!
}
};