In C++ 2003 kann typedef nur für einen vollständigen Typen verwendet werden. Daher wird erlaubt es nicht Zeiger auf eine Funktion und die generischen T als eine Art zu erstellen:C++, Zeiger auf eine Funktion als neuer Typ
template <typename T>
typedef T(*f_function)(T, T, T);
Gibt es eine Möglichkeit, wie dieses Problem in C++ 2003 oder C++ 0x zu entziehen eine Syntax
using (*f_function)(T, T, T); // something like that
ich möchte den Zeiger auf eine Funktion fff als einen Teilnehmer im Konstruktor
template <typename T>
class A
{
public:
f_function fff;
A() {fff = NULL;}
A(f_function pf){fff = &pf;}
};
template <typename T>
T f1(T x, T y, T z) { return x + y + z;}
template <typename T>
T f2(T x, T y, T z) { return x - y - z;}
initialisieren und seinen Wert verwenden. Anschließend:
int main()
{
A <double> a(f1);
double res = a.getX(1.1, 2.2, 3.3);
}
Ist diese Konstruktion sicher? Gibt es einen anderen Weg, um dieses Problem zu lösen? Danke für Ihre Hilfe.
Ich bin mir ziemlich sicher unvollständig 03 C++ erlaubt typedefs Typen: 'struct X; typedef X Y; ' –