Passez quelques arguments dans une fonction C++?
J'ai une fonction C++ qui a 5 arguments, qui ont tous des valeurs par défaut. Si je passe dans les trois premiers arguments, le programme va attribuer une valeur par défaut pour les deux derniers arguments. Est-il possible de passer 3 arguments, et sautez dans le milieu, en donnant des valeurs à-dire, la première, la deuxième et la cinquième arguments?
Réponse courte: Non.
Il existe des solutions de contournement. Mais si vous le pouvez, la surcharge de la place.
Il existe des solutions de contournement. Mais si vous le pouvez, la surcharge de la place.
OriginalL'auteur kyrpav | 2013-09-26
Vous devez vous connecter pour publier un commentaire.
Pas directement, mais vous pourriez être en mesure de faire quelque chose avec std::bind:
L'inconvénient est bien sûr que vous êtes re-spécifier les paramètres par défaut. Je suis sûr que quelqu'un d'autre va venir avec une solution intelligente, mais cela pourrait fonctionner si vous êtes vraiment désespéré.
OriginalL'auteur bstamour
Avec un classique 5 arguments de la fonction, il n'y a aucun moyen de lui donner seulement 3 ou 4. Vous ne pouvez écrire 3 ou 4 avec des arguments par défaut, mais à la fin, vous obtiendrez un appel de fonction avec 5 arguments.
Il y a aussi des problèmes avec votre système, s'il y a plusieurs paramètres avec le même type.
Par exemple, si vous avez
foo(int a=4,int b=5)
et appelfoo(10)
, comment savez-vous que vous voulez l'appelerfoo(10,5)
oufoo(4,10)
?Avec C++11 tuples et Les paramètres nommés idiome, vous pouvez tricher un peu.
Une autre méthode consiste à utiliser std::bind comme décrit il y
OriginalL'auteur Davidbrcz
Non, Il n'est pas possible.
Cependant, je voudrais suggérer que vous devriez utilisation des paramètres de type de données de tableau au lieu de réaliser le scénario vous a donné. Vous pouvez surcharge. Si les types de données des paramètres varie alors vous devriez définir une classe qui a les paramètres requis en tant que membres. L'objet de cette classe. Il permettra non seulement de résoudre votre problème, mais il est également recommandé du point de vue de la facilité de maintenance.
OriginalL'auteur Adarsh Kumar
C'est probablement quelque chose que vous cherchez peut-être, juste une solution de contournement !
La suite est une autre solution de contournement peut être cela aide aussi !
OriginalL'auteur linuxstack