new dans instantiation dans constructeur ??? - C++ - Programmation
Marsh Posté le 24-06-2004 à 15:54:02
mets ton code dans les balises de codes, c'est pas lisible comme ca
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
Marsh Posté le 24-06-2004 à 16:08:32
Comme ca :
Code :
|
Marsh Posté le 24-06-2004 à 16:09:29
Pas de new dans les listes d'initialisation me semble t il, c'est mal
fait ton new dans ton constructeur.
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 ?
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 ?
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
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 ...
Marsh Posté le 24-06-2004 à 16:38:08
struct Foo |
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 ?
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?
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