J'écris une classe, et ce doute est apparu. Est-ce undef. comportement? D'un autre côté, je ne suis pas sûr que ce soit recommandé, ou si c'est une bonne pratique. Est-ce un si je n'assure aucune exception à lancer dans la fonction init?Appel d'une fonction non membre sur une instance avant que soit construit
//c.h
class C{
float vx,vy;
friend void init(C& c);
public:
C();
};
//c.cpp
C::C()
{
init(*this);
}
void init(C& c) //throws() to ensure no exceptions ?
{
c.vx = 0;
c.vy = 0;
}
Merci à l'avance
Vous n'a pas fourni un corps pour vous dtor. Il suffit de le supprimer. –
@epronk. Son code d'exemple, mais ok, laisse être correct. – Tom
'throw()' ne garantit pas qu'il n'y aura aucune exception, il ajoute une vérification de l'exécution qui appellera 'terminate' (ou l'une des autres gorgones) si jamais une exception passe. Il n'y a malheureusement pas de vérification à la compilation des spécifications d'exception ... La prochaine norme ajoutera le mot-clé 'noexcept', pour préciser qu'une méthode ne sera jamais lancée, mais c'est au programmeur de l'assurer et si jamais il vous lance dans le royaume terrible de comportement indéfini. –