statyczny wskaźnik do funkcji w klasie

0

Cześć,
czy jest możliwość utworzenia statycznego wskaźnika do funkcji w klasie, który będzie wskazywał na funkcję statyczną? Jak to zapisać?
Chodzi mi o to, że mam kilka funkcji statycznych w klasie i chciałbym, żeby wskaźnik pokazywał na jedną z nich (w każdym obiekcie powinien wskazywać na tą samą funkcję).

Funkcja wygląda u mnie tak:

static double funkcja(double&);

a wskaźnik nie wiem, jak zrobić... Myślałem, że powinien wyglądać tak:

double (*wksaznik)(double&);

ale jak później chcę go przypisać do funkcji tj.

wskaznik = funkcja;

to wywala mi błąd :(
Jeśli wskaźnik nie byłby statyczny to wszystko jest prawidłowo... Ale ja jednak potrzebuję wskaźnika statycznego ;(
Z góry dziękuję za pomoc.

0

aaa, małe sprostowanie... Myślałem, że wskaźnik powinien wyglądać tak:

static double (*wksaznik)(double&);
0
double (TwojaKlasa::*wksaznik)(double&);

?

0

Wskaźnik do statycznej funkcji składowej wygląda jak normalny wskaźnik do funkcji:

double (*pointer)(double &val);

Całość wyglądać będzie tak:

#include <iostream>

class X {
public:
  // Statyczna funkcja składowa.
  static double function(double &val) {
    return val;
  }
  
  // Statyczny wskaźnik do statycznej funkcji składowej.
  static double (*pointer)(double &val);
};

// Definicja wskaźnika.
double (*X::pointer)(double &val) = X::function;

int main() {
  double val = 3.14;
  std::cout << X::pointer(val);
  
  return 0;
}

http://ideone.com/8T24Sf

0
struct Foo
  {
   static double (*wksaznik)(double&);
   static double Fun(double &f)
     {
      return f;
     }
  };
double (*Foo::wksaznik)(double&);

int main()
  {
   Foo::wksaznik=Foo::Fun;
   return 0;
  }
0

Dziękuję Wam bardzo za pomoc!
Myślałem, że do tego wskaźnika należy się odnosić tylko poprzez operator zakresu i jego nazwę tj. coś w stylu: klasa::wskaznik = klasa::funkcja; a tu trzeba ponownie się rozpisywać ;-).
pozdrawiam

Przepraszam, że jeszcze Was pomęczę, ale mam kolejny problem. Jak zrobiłem tak jak podaliście w pliku main.cpp to wszystko ładnie się kompilowało i działało. Ale jak zrobiłem to w mojej klasie to wywaliło mi następujący error:

error LNK2001: unresolved external symbol "public: static double __cdecl neuron::fun(double &)" (?fun@neuron@@SANAAN@Z)

Czy może mnie ktoś oświecić o co chodzi?

W pliku .h w klasie neuron mam tak:

class neuron{
public:
//...
	static double (*wsk)(double&);
	static double fun(double& x);
};

Po kompilacji brak błędów!
Gdy w pliku .cpp dam taki zapis:

double (*neuron::wsk)(double&) = neuron::fun;

to wywala mi powyższy błąd...

Z góry dziękuję za pomoc!

Widzę, że nikt nie zna odpowiedzi :( No nic, trudno - postaram się jeszcze trochę nad tym posiedzieć.
Mam jeszcze ostatnie pytanie: można stworzyć wskaźnik do funkcji statycznej oraz wskaźnik do funkcji niestatycznej ale czy może być wskaźnik statyczny do funkcji niestatycznej - tj. do metody klasy?

Dobra, ten pierwszy problem został rozwiązany! Po prostu brakowało definicji funkcji O_o :(
No to jeśli byłaby taka możliwość to jeszcze bardzo bym poprosił o podpowiedź czy da się stworzyć statyczny wskaźnik do funkcji niestatycznej klasy?
Z góry bardzo dziękuję!

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