2016-06-01 3 views
-4

Vielen Dank meine Frage zu überprüfen. Ich brauche eine Template-Funktion, um ein Callable-Objekt (wie Lambda, Funktionsobjekt, Bind, Funktionszeiger und Funktion) als Argumente zu verwenden, genau wie STL, aber ich habe wirklich keine Ahnung, wie es geht, und es gibt keine online Ressource .Definieren Sie eine Funktion verwenden Callable Object als Argument

Um genau zu sein, möchte ich eine Funktion entwerfen, um meinen Container zu durchlaufen, und für jedes Element wird es die Callable-Funktion aufrufen, um das Element genau wie STL :: for_each() zu bearbeiten. Könnten Sie bitte ein Beispiel geben?

Vielen Dank!

+1

Um Ihre Chancen auf Hilfe zu erhöhen. Sie sollten versuchen, ein kleines Beispiel für das, was Sie versuchen, zu programmieren. – kfsone

Antwort

0

Die STL verwendet Vorlagen, um dies zu tun. Etwas wie folgt aus:

template<class CallableObjectType> 
void do_stuff(/* other arguments */, CallableObjectType object) 
{ 
    // ... 
    object(arg1, arg2, arg3); 
    // ... 
} 

das heißt, es nicht versuchen Sie Ihr Objekt zu zwingen aufrufbar zu sein, außer durch Aufruf. Wenn das Objekt nicht aufrufbar ist, kann die Vorlage nicht instanziiert werden, da object(arg1, arg2, arg3) ungültig ist, sodass Sie eine Fehlermeldung erhalten. Wenn das Objekt aufrufbar ist, funktioniert es wie erwartet.

Verwandte Themen