Conception objet - C++ - Programmation
Marsh Posté le 11-08-2003 à 18:45:14
giz a écrit : si on procederait ainsi, la classe la "moins basique" aurait un nombre d'argument considerable ...comment resoudre ce probleme ? |
class A
{
A(creationStructure cs);
};
class B
{
B(creationStructure cs);
};
// pour a
struct creationStructure
{
int a, b;
};
// pour b
struct creationStructureB : public creationStructure
{
int c, d;
}
puis dans le code :
B::B(creationStructure cs)
{
creationStructureB* csb = (creationStructureB*)&cs;
}
Méthode standard. Je n'aime pas trop, un hash est sûrement plus simple.
giz a écrit : 2) Un constructeur de classe, par definition, ne renvoit pas de valeur. Si ce constructeur DOIT en renvoyee une (dans mon cas du test d'un fopen par exemple), le constructeur reviendrait a appeler une fonction uniquement pour feinter alors (qui pourra renvoyee une valeur)...est-ce la bonne facon de proceder ? |
Ton objet a deux méthodes importantes : le constructeur qui initialise un objet 'vide' mais valide (pointeurs à null, etc) et une méthode Create() qui prend la structure de création et s'occupe de créer l'objet.
Marsh Posté le 11-08-2003 à 20:38:08
<<Un constructeur de classe, par definition, ne renvoit pas de valeur. Si ce constructeur DOIT en renvoyee une (dans mon cas du test d'un fopen par exemple)...>>
Formulation superbizarre qd même! D'une certaine manière, le constructeur "renvoie" l'objet qu'il construit, c'est déjà pas mal, non?
Marsh Posté le 11-08-2003 à 17:30:44
Voila, je me pose des questions sur mon programme qui me tracassent un peu la tete :
1)Je dispose de 2 classes definient sommairement ainsi :
La definition du constructeur de la classe CCard_comm doit donc faire appel au constructeur de la classe CShared_buffer.
Sa definition commence ainsi (dans le .cpp):
Ma question : le troisieme argument de valeur "1000" du constructeur de la classe de base est code en dur. Si je souhaite le passer en variable, le prototype du constructeur de la classe derivee deviendrait :
...alors que cet argument n'a aucun rapport avec la classe derivee (CCard_comm) mais avec la classe de base (CShared_buffer). Dans le cas d'un arbre "genealogique" (vous comprenez ? ) tres "profond", si on procederait ainsi, la classe la "moins basique" aurait un nombre d'argument considerable ...comment resoudre ce probleme ?
2) Un constructeur de classe, par definition, ne renvoit pas de valeur. Si ce constructeur DOIT en renvoyee une (dans mon cas du test d'un fopen par exemple), le constructeur reviendrait a appeler une fonction uniquement pour feinter alors (qui pourra renvoyee une valeur)...est-ce la bonne facon de proceder ?