001
03.06.2009, 16:09 Uhr
0xdeadbeef
Gott (Operator)
|
Zunächst am Rande angemerkt: Es handelt sich bei einer Klassenvorlage noch nicht um eine Klasse, das ist ein wichtiger Unterschied. Eine Klasse wird erst draus, wenn sie konkretisiert wird.
Aber zu deinem Problem: A<double>::fBsp1 kann nicht in double(*)(double), sondern nur in double (A<double::*)(double) gestopft werden - es ist eine Methode. Wenn fBsp1 das Objekt a nicht benötigt, kannst du eine statische Funktion daraus machen, die dann in double(*)(double) passt:
C++: |
template <typename T> class A { T (*f) (T x); static T fBsp1(T x); // ... };
|
Ansonsten muss f halt ein Methodenzeiger werden:
C++: |
template <typename T> class A { T (A::*f) (T x); T fBsp1(T x); // ... };
|
...und dann nachher beim Aufruf als
C++: |
result = (a.*a.f)(3.141);
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |