Wie kann ich eine Variable mit demselben Typ wie eine bestimmte Funktion erstellen?

8

Ich habe eine C ++ Funktion wie

%Vor%

Nun möchte ich eine Variable erstellen, die einen Zeiger auf f enthält. Diese Variable sollte den richtigen Typ haben ( int (*)( const std::string &, double ) - aber ich möchte diesen Typ nicht explizit ausschreiben. Ich möchte ihn aus f ableiten, damit ich die Typ-Signatur nicht wiederhole Ich würde gerne etwas schreiben in der Art von:

%Vor%

Um dies zu erreichen, habe ich versucht, so etwas zu tun:

%Vor%

Meine Hoffnung war, dass vielleicht der Rückgabetyp einer Funktion ( deduceType , in diesem Fall) als Vorlagenargument verwendet werden könnte, aber ach - es scheint, dass Sie das nicht können.

Weiß jemand, wie man das macht? Ich suche eine C ++ 03 Lösung.

    
Frerich Raabe 11.05.2011, 09:46
quelle

4 Antworten

9

C ++ 0x hinzugefügt decltype was macht was du willst (wenn ich es richtig verstanden habe).

Eine andere Option könnte Boost :: Typeof sein, die bereitgestellt werden soll die gleiche Funktionalität bis declltype in allen Compilern unterstützt wird.

    
Tamás Szelei 11.05.2011, 09:51
quelle
0

Sie könnten Ihre Variable wie folgt deklarieren:

%Vor%

Hier ist FuncPtr Ihre Variable. und Sie können es verwenden wie: int result = FuncPtr(str, d); , sofern FuncPtr nicht NULL ist. Dafür könntest du tun:

%Vor%     
Vite Falcon 11.05.2011 09:51
quelle
0

Wenn Sie mit dem aktuellen Standard nicht weiterkommen, verwenden Sie BOOST_TYPEOF - ala:

%Vor%     
Nim 11.05.2011 09:59
quelle
0

Besser typedef verwenden. Sie können typedef name statt der gesamten Funktionssignatur wiederholen.

In den meisten Fällen ist typeof keine gute Idee, auch wenn Sie es tun können.

%Vor%     
Serge Dundich 11.05.2011 11:47
quelle

Tags und Links