Template c++ / fonction exit()

Résolu
Asterix2231 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
Asterix2231 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'écris un programme dans lequel je définis une classe vecteur, au sens mathématique du terme, comme suit:

vecteur.h
class Vecteur{
public:
    double x,y,z;
    Vecteur(double X, double Y, double Z);
};


vecteur.cpp
Vecteur::Vecteur(double X, double Y, doubleZ){
    x = X; y = Y; z = Z;
}


Pour les besoins du programme, je surcharge l'opérateur "/" de façon à pouvoir diviser mon vecteur par un scalaire.
Afin de rester indépendant du type de mon scalaire, j'utilise une fonction template.
De même, afin de s'affranchir du problème de la division par zéro, je spécifie une condition pour fermer le programme si jamais le scalaire fourni est nul.

vecteur.cpp
template <typename Scalaire>
Vecteur& operator/(const Vecteur& V, const Scalaire S){
    if(S==0){
        cout << "Erreur: division par zéro." << endl;
        exit(EXIT_FAILURE);
    }
    else return Vecteur(V.x/S, V.y/S, V.z/S);
}


Mon problème est que g++ n'accepte pas la fonction exit(), avec ou sans argument (j'ai essayé les deux), dans une fonction template. Voici mon code d'erreur:

vecteur.cpp: In function ‘Vecteur operator/(const Vecteur&, const Scalaire&)’:
vecteur.cpp:89: error: there are no arguments to ‘exit’ that depend on a template parameter, so a declaration of ‘exit’ must be available

Quelqu'un a une suggestion sur la manière de faire quitter le programme? Est ce qu'il faut effectivement redéfinir une fonction exit()? Et dans ce cas comment fait-on, parce que là je ne saurais vraiment pas?

Merci d'avance!
A voir également:

2 réponses

Asterix2231 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   11
 
Ok, en cherchant j'ai compris que cela venait d'un truc appelé "two-stage (or dependent) name lookup", auquel je n'ai rien compris :p

Quelq'un aurait une explication svp?

Merci!
0
Asterix2231 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   11
 
Bon en fait j'ai trouvé, il me fallait juste rajouter #include <cstdlib> dans mon vecteur.h.

Merci moi!
0