Bonjour à tous,
Voici le problème: j'ai une classe, ICBond, qui prend dans son constructeur, 3 arguments, 2 adresses d'une autre classe ICAtom et un entier. Cependant, les 2 instances de classe ICAtom (qui sont des adresses) ne doivent pas être nulle. Donc un petit if pour vérifier, et si l'un des 2 est nul, je lance une exception. Le code marche parfaitement si les 2 atomes ont des adresses bien définis, mais si l'un d'entre eux à une adresse "nulle", j'ai un message d'erreur qui apparait à la fin de l'appel du constructeur, après avoir finis l'execution du catch et ce sans raison. Une idée ???

Message d'erreur :
Program received signal: “SIGABRT”.


Code ICBond.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
	class ICBond 
	{
	private:
		ICAtom* Atom1;
		ICAtom* Atom2;
		BondType  Type;
		bool Clear();
 
	public:
		ICBond(ICAtom* _Atom1, ICAtom* _Atom2, BondType _BType)throw (MolException);}
Code de la classe d'exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MolException: public std::exception
{
public:
    MolException(int numero=0, const std::string& phrase="", int level=0) throw();
 
	virtual const char* what() const throw();
	int getLevel() const throw();
	int getNum() const throw();
 
    virtual ~MolException() throw()
    {}
 
private:
    int m_numero;               // Numéro de l'erreur.
    std::string m_phrase;       // Description de l'erreur.
    int m_level;               // Niveau de l'erreur: 
};
Le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
int main (int argc, char * const argv[]) {
	ICAtom *Atm  = new ICNMole::ICAtom(1,1,1);
	ICAtom *Atm2 = NULL;//new ICNMole::ICAtom(2,2,2);
	ICBond *Bond = new ICNMole::ICBond(Atm,Atm2,ICNMole::Single);
 
}
Merci d'avance !!