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 :
Code :
- class CShared_buffer
- (
- private :
- ...
- public :
- CShared_buffer(const char * name, size_t siz_elt, unsigned long size); //mon seul constructeur
- );
- class CCard_comm : public CShared_buffer
- {
- private :
- ...
- public :
- CCard_comm(); //mon seul constructeur
- );
|
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):
Code :
- CCard_comm::CCard_comm(void)
- {
- CShared_buffer::CShared_buffer("bufRig2Ss", sizeof(long), 1000);
- ...
- )
|
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 :
Code :
- CCard_comm::CCard_comm(int val)
|
...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 ?