1106Fermer1108
Kevin KoflerLe 09/05/2010 à 18:20
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. gni
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;