Comment puis-je attribuer un alias pour un nom de fonction en C++?

Il est facile de créer un nouveau nom pour un type, d'une variable ou d'un espace de noms. Mais comment puis-je attribuer un nouveau nom à une fonction? Par exemple, je veux utiliser le nom holler pour printf. #define est évident... d'une autre manière?

Solutions:

  1. #define holler printf
  2. void (*p)() = fn; //function pointer
  3. void (&r)() = fn; //function reference
  4. inline void g(){ f(); }
  • Merci à vous tous. Mes collègues vont l'aimer voir void (&NewName)(some_vector&, float, float, float, float) = OldName; dans mon prochain enregistrement.
  • pas autant qu'ils vont aimer vous voir utiliser des noms aléatoires pour les fonctions de bibliothèque standard.
  • Je ne suis pas déconner avec printf ici. C'était seulement un exemple. Le problème ici n'a plus à faire avec les limitations de l'anglais qu'autre chose. J'ai une seule fonction de servir Un but et de l'objet B, mais je suis tout simplement incapable de trouver un nom unique servant à la fois ici.
  • Exactement comment voulez-vous créer un alias pour une variable? Sauf que tu veux dire une référence ou un pointeur.
  • précisément. T &a = b; crée un nouveau nom pour b. typedef pour les types et les namespace A=B; pour les espaces de noms.
  • Un non-évident moment avec la fonction des références et pointeurs: si vous définissez l'en-tête, ils doivent être déclarés comme static ou extern (avec la définition correspondante dans le fichier source dans le dernier cas) - sinon, vous pouvez obtenir de multiples "définition" de l'erreur. Mentionné à propos de ce seulement parce que nous discutons des alias (généralement, ils peuvent être utilisés dans les en-têtes) dans cette question.
  • Il est using BaseClass::BaseClassMethod, et il n'y a using AliasType = Type;, et il en est de même namespace AliasNamespace = Namespace;. Ce qui nous manque est using AliasFunction = Function;

InformationsquelleAutor Agnel Kurian | 2010-06-16