Je suis un newbie en C++.
Comment ce fait-il que le contructeur
de la classe mère ne soie pas appeler.
J'ai un classe de gestion memoirs (surcharge de new
et delete)qui encapsule des fonctions en C proprio
je fais hérité toutes les autres classes qui en ont besoin
de celle-ci pour ne pas surcharger les operateurs globaux.
namespace dps
{
class CMemory
{
public:
CMemory(){
// init de la lib memoirs
openMgr(); // ouvertur du gestionnaire
initMgr(&mp); // init de la clef de session
// pour le gestionnaire
}
void *operator new (size_t size)throw(std::bad_alloc){
void *p = NULL;
getMem(mp, &p, size); // allocation en fonction
// de la clef
if (!p){
throw(std::bad_alloc);
return p;
}
void operator delete(void* p)throw(){
if (p==NULL)
return;
if (!delMem(mp,p)) // desallocation
throw();
}
vitual CMemory(){
close(&mp); //fermeturs de la clef
}
private:
void *mp; // ptr sur la clef du
// gestionnaire de mem
};
}
namespace dps
{
class CNetwork: public CMemory
{
public:
CNetwork(const char *paddress, uint16 port):CMemory();
~CNetwork();
std::string *getAddress(){return mpaddress};
uint16 getPort(){return mport};
uint getSocket(){return msocket};
int read(char *pbuffer, size_t size) {} = 0;
int write(char *pbuffer, size_t size){} = 0;
bool connect();
private:
int msocket;
std::string *mpaddress;
uint16 mport;
}
}
Mon soucis est que le contructeur de CMemory n'est pas
appeler donc abort();
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Geoffroy Baud writes:
Mon soucis est que le contructeur de CMemory n'est pas appeler donc abort();
Dans
dps::CNetwork* var = new dps::CNetwork(host, port);
Le constructeur de CMemory est appele apres l'appel a l'operateur new (ce qui est normal, c'est difficile d'appeler un constructeur si on ne sait pas ou il faut construire). Je suppose que c'est lui qui cause l'abort.
Tu dois t'arranger differemment pour initialiser ton systeme de gestion de memoire.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Geoffroy Baud <geffs@bluewin.ch> writes:
Mon soucis est que le contructeur de CMemory n'est pas
appeler donc abort();
Dans
dps::CNetwork* var = new dps::CNetwork(host, port);
Le constructeur de CMemory est appele apres l'appel a l'operateur new
(ce qui est normal, c'est difficile d'appeler un constructeur si on ne
sait pas ou il faut construire). Je suppose que c'est lui qui cause
l'abort.
Tu dois t'arranger differemment pour initialiser ton systeme de
gestion de memoire.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Mon soucis est que le contructeur de CMemory n'est pas appeler donc abort();
Dans
dps::CNetwork* var = new dps::CNetwork(host, port);
Le constructeur de CMemory est appele apres l'appel a l'operateur new (ce qui est normal, c'est difficile d'appeler un constructeur si on ne sait pas ou il faut construire). Je suppose que c'est lui qui cause l'abort.
Tu dois t'arranger differemment pour initialiser ton systeme de gestion de memoire.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Geoffroy Baud
Geoffroy Baud writes:
Mon soucis est que le contructeur de CMemory n'est pas appeler donc abort();
Dans
dps::CNetwork* var = new dps::CNetwork(host, port);
Le constructeur de CMemory est appele apres l'appel a l'operateur new (ce qui est normal, c'est difficile d'appeler un constructeur si on ne sait pas ou il faut construire). Je suppose que c'est lui qui cause l'abort.
Tu dois t'arranger differemment pour initialiser ton systeme de gestion de memoire.
A+
Merci beaucoup et bonne journée, bon week-end
Geoffroy Baud <geffs@bluewin.ch> writes:
Mon soucis est que le contructeur de CMemory n'est pas
appeler donc abort();
Dans
dps::CNetwork* var = new dps::CNetwork(host, port);
Le constructeur de CMemory est appele apres l'appel a l'operateur new
(ce qui est normal, c'est difficile d'appeler un constructeur si on ne
sait pas ou il faut construire). Je suppose que c'est lui qui cause
l'abort.
Tu dois t'arranger differemment pour initialiser ton systeme de
gestion de memoire.
Mon soucis est que le contructeur de CMemory n'est pas appeler donc abort();
Dans
dps::CNetwork* var = new dps::CNetwork(host, port);
Le constructeur de CMemory est appele apres l'appel a l'operateur new (ce qui est normal, c'est difficile d'appeler un constructeur si on ne sait pas ou il faut construire). Je suppose que c'est lui qui cause l'abort.
Tu dois t'arranger differemment pour initialiser ton systeme de gestion de memoire.