Si je supprime mon prototype de fonction et déplace la fonction du bas vers le haut, tout fonctionne correctement et la fonction peut accepter un float ou un int comme type de données. N'êtes-vous pas normalement supposé prototyper des fonctions? En outre, je suis un peu curieux de savoir pourquoi la fonction ne fonctionne que si elle est au sommet. Je suis à peu près certain que c'est une question de cadrage, mais cela me dépasse pour une raison quelconque.Pourquoi ce prototype de fonction de modèle ne fonctionne-t-il pas correctement?
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
template <class tyler> // function template
tyler Addition(tyler, tyler); // function prototype
int main()
{
setprecision(2); //limits decimal output to 2 places
int num1, num2;
float num3, num4;
cout << "Enter your first number: \n";
cin >> num1;
cout << "Enter your second number: \n";
cin >> num2;
cout << num1 << " + " << num2 << " = " << Addition(num1, num2);
cout << "Enter your third number: (round 2 decimal places, e.x. 7.65) \n";
cin >> num3;
cout << "Enter your fourth number: (round 2 decimal places, e.x. 7.65 \n";
cin >> num4;
cout << num3 << " + " << num4 << " = " << Addition(num3, num4);
cin.clear(); // Clears the buffer
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Ignores anything left in buffer
cin.get(); // Asks for an input to stop the CLI from closing.
return 0;
}
tyler Addition(tyler num1, tyler num2)
{
return (num1 + num2);
}
Je suivais le tutoriel de la fonction modèle de thenewboston et c'était la même chose seulement il ne l'a pas prototype. Je prototypais normalement mes fonctions, alors j'essayais de trouver un moyen de le faire. A part ça, mon code est exactement le même que le sien. En plus de cela, est-ce que je peux supposer que la deuxième boîte de code que vous m'avez donnée serait un bon exemple de fonction de template? –
Je vais être honnête, pas de tutoriel vidéo de C++ que j'ai vu correctement enseigne les bases et les parties avancées, bien sûr inclus. Je suggère de prendre un livre sur C++ à la place. – user975989
Je viens de mettre à jour ma réponse pour indiquer plus clairement que vous pouvez garder votre prototype * et * définir la fonction du modèle plus tard. Vous avez juste besoin d'inclure l'en-tête du modèle dans les deux cas. – templatetypedef