2009-09-19 7 views

Répondre

11

Malheureusement, ce n'est pas possible. Il existe des wrappers pour certains opérateurs communs dans la bibliothèque standard C++, dans l'en-tête functional, par ex. std::plus<T>. Cependant, cela ne fonctionnera pas avec votre code, car votre fonction print nécessite un paramètre de fonction spécifique, ce qui n'est pas le cas pour plus<int>.

Au lieu de cela, essayez de passer un argument de modèle, qui fonctionne beaucoup mieux:

template <typename BinaryFunction> 
void print(int a, int b, BinaryFunction f); 

print(12, 13, std::plus<int>()); 
+1

Dans la signature de la fonction, vous devez supprimer int avant BinaryFunction. – UncleBens

2

Oui, il est possible en général, mais il n'y a pas int operator+(int, int). int+int arrive à être une expression intégrée. Cela fonctionnerait pour std::string::operator+

Questions connexes