2013-02-13 14 views
14

Ich möchte typedef für Funktionszeiger machen, der stl Container als Argument hat und dieser Container hat unbekannten Typ. Etwas wie dieses:Wie typedef des Funktionszeigers definiert wird, der Vorlagenargumente hat

typedef void (* TouchCallBack)(GLRenderer*, const MotionEvent&, std::vector<T >); 

ist es möglich? (Vor allem in C++ 03)

+2

Nicht ++ in C 03, nein, es sei denn, Boost-oder etwas hat seine Hülse einen Trick. – chris

+1

Es ist nichts falsch mit dem, was Sie geschrieben haben, aber Sie müssen in einem Kontext (Funktion oder Klassenvorlage) sein, in dem 'T' deklariert ist. –

+0

Ich meine die globale statische Funktion – strobe

Antwort

27

Ich weiß nicht, jeder C++ 03-Lösung genau so, und es wird nicht in die Sprache gebaut, aber in C++ 11, ist dies möglich, mit using Aliase:

template<typename T> 
using TouchCallBack = void (*)(GLRenderer*, const MotionEvent&, std::vector<T >); 

eine Abhilfe für 03 C++ ist eine Struktur verwenden:

template<typename T> 
struct TouchCallBack { 
    typedef void (*type)(GLRenderer*, const MotionEvent&, std::vector<T >); 
}; 

//use like TouchCallBack<int>::type 
Verwandte Themen