|
|
|
|
Bonjour,
je n'arrive pas à résoudre cet exercice.
Il s"agit d'un programme C++ où il faut déterminer le résultat de l'éxécution d'une fonction.
Cette fonction se nomme LancerExceptions( ).
Malheureusement, j'étais absent pendant cette période, et toute cette syntaxe m'embrouille un peu :-)
Auriez-vous l'aimabilité de m'aider à résoudre l'exercice ci-dessous ?
Bien sur, je ne vous demande pas de faire le travail à ma place. Simplement une piste, un début d'idée...
Merci d'avance.
#include <iostream>
#include <string>
#include <stdexcept>
class Eleve
{
public :
Eleve( );
};
class EleveX
{
public :
EleveX( );
};
class Maitre
{
Eleve sonEleve;
char sonIdentifiant;
public :
EleveX sonEleveX;
Maitre(char Identifiant);
}
classe MaitreX : public Maitre
{
double sonNombre;
public :
MaitreX(double Nombre);
~MaitreX( );
};
Eleve::Eleve( )
{
std::cout << "Construction d'un eleve" << std::endl;
}
EleveX::~EleveX( )
{
std::cout << "Destruction d'un eleveX" << std::endl;
}
Maitre::Maitre(char Identifiant)
: sonIdentifiant(Identifiant)
{
std::cout << "Construction d'un maitre : " << sonIdentifiant << std::endl;
if(sonIdentifiant < 'A' || sonIdentifiant > 'Z')
throw std::domain_error("L'identifiant n'est pas une lettre");
else
std::cout << "L'identifiant est une lettre" << std::endl;
}
MaitreX::MaitreX(double Nombre)
: Maitre('Z'), sonNombre(Nombre)
{
std::cout << "Construction d'un maitreX : " << sonD << std::endl;
}
MaitreX::~MaitreX( )
{
std::cout << "Destruction d'un maitreX" << std::endl;
}
void tester(char p)
{
try
{
Maitre Maitre2(p);
try
{
if (p <= 'Z') throw (p <= 'Z');
else
{
std::cout << "OK" << std::endl;
}
}
catch(std::domain_error & uneException)
{
std::cout << "ErreurTypeA : " << uneException.what( ) << std::endl;
test('Z');
}
}
catch(std::domain_error & uneException)
{
std:cout << "ErreurTypeB : " << uneException.what( ) << std::endl;
test('A');
}
}
void lancerExceptions( )
{
try
{
MaitreX MaitreX1(3.25);
test('0');
}
catch(bool & exception)
{
std::cout << "Exception bool !" << std::endl;
}
}Petit rappel de cours. En C++ une fonction est quittée a priori par un point de sortie, a priori un return (éventuellement l'accolade fermante de la fonction si cette fonction ne retourne rien).
try{
//...
f();
//...
}catch(type_err1 & e1){
// ...
}catch(type_err2 & e2){
//...
}catch(...){ // catch les erreurs non rattrapées
//
}
Maintenant il ne te reste plus qu'à copier coller ton code dans un environnement de développement C++ (par exemple code::blocks ou dev-cpp sous windows et kdevelop ou anjuta sous linux) et regarder ce qui se passe. Bonne chance |
Merci pour toutes vos explications, Mamiemando.
|