JackosKing (./1103) :
C'est surtout que si le carré derive du rectangle, il doit passer le teste unitaire du rectangle...
Pour cela, il faut déjà qu'il y en ait un.

Folco (./1105) :
JackosKing (./1101) :
Pour le deuxième sujet, l'exception est vraiment moche. Et je tenais juste à préciser qu'il ne faut pas mélanger construction et initialisation d'un objet.
Tu peux préciser les deux points stp, aussi bien sur l'initialisation que l'exception ?
edit -> en fait, je pense faire la différence entre création et initialisation (création des objets composants l'objet en question VS initialisation des pointeurs via des new, des différentes données à des valeurs précises et de l'appel aux initialisateurs des autres objets). C'est pas ça ?Si oui, pourquoi différencier les deux ? C'est pas cool de pouvoir tout mettre dans le constructeur et lancer une exception au cas où ya le moindre truc qui déconne ?
Si j'ai bien compris, son idée, c'est qu'au lieu d'avoir:
Classe objet; // peut échouer, mais comment le détecter?tu as:
Classe objet; // objet n'est pas encore initialisé/utilisable
if (!objet.init()) FAIL; // initialise l'objet, retourne true (succès) ou false (échec)
C'est une variante de la méthode de la méthode
isValid() (
./1087), tu peux toujours avoir une méthode
isValid() d'ailleurs, mais son comportement sera différent. La méthode du
./1087, c'est:
Classe objet; // initialise l'objet, peut échouer
if (!objet.isValid()) FAIL;
Celle du
./1101 avec une méthode
isValid(), c'est:
Classe objet; // objet n'est pas encore initialisé/utilisable
// ici, objet.isValid() == false
bool valid1 = objet.init();
bool valid2 = objet.isValid();
// ici, valid1 == valid2
if (!valid1) FAIL;