new dans instantiation dans constructeur ???

new dans instantiation dans constructeur ??? - C++ - Programmation

Marsh Posté le 24-06-2004 à 15:53:11    

Salut !
 
Je bosse sur xerces (enfin je débute) et j'ai trouvé un code d'exemple, mais impossible de le faire marcher.
Le voici :
SAXPrintHandlers::SAXPrintHandlers( const   char* const encodingName,        const XMLFormatter::UnRepFlags unRepFlags)          : fTarget(new LocalFileFormatTarget(goutputfile)) ,     fFormatter(
  encodingName,         fTarget,         XMLFormatter::NoEscapes,    unRepFlags )
{
}
SAXPrintHandlers::~SAXPrintHandlers()
{
 delete fTarget;
}
 
et voici l'erreur :
/home/.../XML/src/xerces-c-src_2_5_0/samples/SAXPrint/SAXPrintHandlers.cpp:189: error: parse
   error before `(' token  
et pour que vous situiez la ligne 189 c'est celle ou il y a le new
 
 
 
Au secours !!!
 
Olivier

Reply

Marsh Posté le 24-06-2004 à 15:53:11   

Reply

Marsh Posté le 24-06-2004 à 15:54:02    

mets ton code dans les balises de codes, c'est pas lisible comme ca


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 24-06-2004 à 16:00:49    

euh je ne comprends pas cette histoire de balise de code, mais je peux l'arranger :
Salut !
 
Je bosse sur xerces (enfin je débute) et j'ai trouvé un code d'exemple, mais impossible de le faire marcher.
Le voici :
SAXPrintHandlers::SAXPrintHandlers( const char* const encodingName,  
const XMLFormatter::UnRepFlags unRepFlags)
: fTarget(new LocalFileFormatTarget(goutputfile)) ,
fFormatter(encodingName,      fTarget,       XMLFormatter::NoEscapes,    unRepFlags )
{
}
SAXPrintHandlers::~SAXPrintHandlers()
{
 delete fTarget;
}
 
et voici l'erreur :
/home/.../XML/src/xerces-c-src_2_5_0/samples/SAXPrint/SAXPrintHandlers.cpp:189: error: parse
   error before `(' token  
et pour que vous situiez la ligne 189 c'est celle ou il y a le new
 
Est-ce que ca va mieux ?
 
Olivier

Reply

Marsh Posté le 24-06-2004 à 16:08:32    

Comme ca :
 

Code :
  1. SAXPrintHandlers::SAXPrintHandlers( const char* const encodingName,
  2. const XMLFormatter::UnRepFlags unRepFlags) : fTarget(new LocalFileFormatTarget(goutputfile)) ,fFormatter(encodingName,fTarget,XMLFormatter::NoEscapes, unRepFlags )
  3. {
  4. }
  5. SAXPrintHandlers::~SAXPrintHandlers()
  6. {
  7. delete fTarget;
  8. }


Message édité par Joel F le 24-06-2004 à 16:08:57
Reply

Marsh Posté le 24-06-2004 à 16:09:29    

Pas de new dans les listes d'initialisation me semble t il, c'est mal :o
fait ton new dans ton constructeur.

Reply

Marsh Posté le 24-06-2004 à 16:13:14    

damned !  
c'est pas mon code, et visiblement il préfère (et semble même obligé) de le laisser là (si je mets le fFormatter dans le constructeur il me dit qu'il est private. C'est un code assez bourrin donc je me sens tout perdu, je ne sais plus ce que je peux/dois faire) . Y'a-t-il un moyen de corriger ou de apsser outre ca ?

Reply

Marsh Posté le 24-06-2004 à 16:13:37    

non, ça marche très bien :o

Reply

Marsh Posté le 24-06-2004 à 16:23:35    

super je suis rassuré. je vais pouvoir utiliser ce code, mais j'ai quand même une question :
 
pourquoi ca compile pas chez moi ?
 
c'est quoi son problème ?

Reply

Marsh Posté le 24-06-2004 à 16:26:35    

c'est quoi ça goutputfile :o

Reply

Marsh Posté le 24-06-2004 à 16:28:26    

Taz a écrit :

non, ça marche très bien :o


 
o_O bon OK ^^

Reply

Marsh Posté le 24-06-2004 à 16:28:26   

Reply

Marsh Posté le 24-06-2004 à 16:29:19    

c'esyt même carrément conseiller :o

Reply

Marsh Posté le 24-06-2004 à 16:34:16    

le goutputfile c'est le nom du fichier de sortie (hum je viens de faire une traduction... lol)
moi par exemple je l'ai mis à :
static char* goutputfile = "/home/[...]/XML/src/xerces-c-src_2_5_0/work/output.xml" ;
 
 
 
sinon je peux dire que ce forum est pas mal cool vu la rapidité des réponses !
Au secours !!
 
Olivier

Reply

Marsh Posté le 24-06-2004 à 16:36:00    

static const char goutputfile[] = "/home/[...]/XML/src/xerces-c-src_2_5_0/work/output.xml" ;
 
 
sera déjà bien mieux ...

Reply

Marsh Posté le 24-06-2004 à 16:38:08    

struct Foo
{
  Foo(int) { }
};
 
struct Bar
{
  Foo *f;
 
  Bar()
    :f( new Foo(42) )
  { }
};
 
[16:37:45][pts/33][/tmp][#25]
benoit@athlon >>> g++_iso -c cs.cpp
 

Reply

Marsh Posté le 24-06-2004 à 16:58:49    

ok j'ai résolu le rtuc, vous allez rire :
le hpp contenant le LocalFileFormatTarget n'était pas inclus (une erreur que je fais tellement souvent).
En tous cas j'ai appris qu'on pouvait mettre des new dans une instanciation.
 
Question : pourquoi est-ce mieux que dasn le constructeur ?

Reply

Marsh Posté le 24-06-2004 à 17:02:03    

non ta stupidité ne me fait pas rire

Reply

Marsh Posté le 24-06-2004 à 17:03:42    

moi non plus vu le temps que je passe à la corriger, mais comme je ne suis pas programmeur je n'en ai pas les réflexes. Par contre j'aime bien comprendre. Et quand tu dis que c'est mieux ainsi j'aimerai savoir pourquoi ? C'est plus joli ? plus efficace?

Reply

Marsh Posté le 24-06-2004 à 17:10:04    

plus sur au niveau des exceptions

Reply

Marsh Posté le 24-06-2004 à 17:14:26    

ok merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed