Bonjour a toutes et a tous ,
J'ai copié collé ce code sur le site que j'étudie , pour m'apercevoir qu'il y a l'air d'avoir une erreur de portée.
Voici le code :
J'ai copié collé ce code sur le site que j'étudie , pour m'apercevoir qu'il y a l'air d'avoir une erreur de portée.
Voici le code :
#include <iostream>
#include <limits>
template <typename T, typename Predicat>
void entree_securisee(T & variable, Predicat predicat)
{
while (!(std::cin >> jour) || !predicat(variable))
{
if (std::cin.eof())
{
throw std::runtime_error("Le flux a été fermé !");
}
else if (std::cin.fail())
{
std::cout << "Entrée invalide. Recommence." << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
else
{
std::cout << "Le prédicat n'est pas respecté !" << std::endl;
}
}
}
int main()
{
int jour { 0 };
std::cout << "Quel jour es-tu né ? ";
entree_securisee(jour, [](int jour) -> bool { return jour > 0 && jour <= 31; });
int mois { 0 };
std::cout << "Quel mois ? ";
entree_securisee(mois, [](int mois) -> bool { return mois > 0 && mois <= 12; });
int annee { 0 };
std::cout << "Quelle année ? ";
entree_securisee(annee, [](int annee) -> bool { return annee > 1900; });
double taille { 0.0 };
std::cout << "Quelle taille ? ";
entree_securisee(taille, [](double taille) -> bool { return taille > 0.0; });
std::cout << "Tu es né le " << jour << "/" << mois << "/" << annee << " et tu mesures " << taille << "m." << std::endl;
return 0;
}
chris@chris:~/Bureau/Essai$ g++ essai18.cpp -o essai18C
essai18.cpp: In function ‘void entree_securisee(T&)’:
essai18.cpp:7:26: error: ‘jour’ was not declared in this scope
while (!(std::cin >> jour))
^~~~
essai18.cpp: In function ‘void entree_securisee(T&, Predicat)’:
essai18.cpp:29:26: error: ‘jour’ was not declared in this scope
while (!(std::cin >> jour) || !predicat(variable))
^~~~
chris@chris:~/Bureau/Essai$
Que devrai je faire pour arranger ca ?