web-dev-qa-db-fra.com

C ++ passe le type de variable à la fonction

Comment passer un type de variable à une fonction? comme ça:

void foo(type){
    cout << sizeof(type);
}
31
user3325976

Vous ne pouvez pas transmettre des types de ce type car les types ne sont pas des objets. Ils n'existent pas au moment de l'exécution. Au lieu de cela, vous voulez un modèle, qui vous permet d'instancier des fonctions avec différents types au moment de la compilation:

template <typename T>
void foo() {
  cout << sizeof(T);
}

Vous pouvez appeler cette fonction avec, par exemple, foo<int>(). Il instancierait une version de la fonction avec T remplacé par int. Rechercher modèles de fonctions .

39
Joseph Mansfield

Comme l'a souligné Joseph Mansfield, un modèle de fonction fera ce que vous voulez. Dans certaines situations, il peut être judicieux d'ajouter un paramètre à la fonction afin que vous n'ayez pas à spécifier explicitement l'argument du modèle:

template <typename T>
void foo(T) {
  cout << sizeof(T)
}

Cela vous permet d'appeler la fonction comme foo(x), où x est une variable de type T. La version sans paramètre devrait être appelée comme foo<T>().

14
microtherion