Bonjour,
je cherche � manipuler la copie d'un objet, gr�ce au code r�duit suivant:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
	CXmlFile f = _xml_file;
	f.SetTraversalMode(M_PRE_ORDER);
La m�thode appel�e reste bloqu�e dans une boucle infinie. Quand je manipule l'objet original:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
	CXmlFile &f = _xml_file;
	f.SetTraversalMode(M_PRE_ORDER);
le message est envoy� correctement; si mes souvenirs sont bons, lorsqu'on initialise un objet au moment de sa d�claration, c'est le constructeur de copie qui est utilis� (et non l'op�rateur =). Je pensais que celui par d�faut suffirait pour cette classe dont voici la d�finition:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
#ifndef	_CXMLFILE_H
#define	_CXMLFILE_H
 
#include <stack>
#include <queue>
#include "tinyxml.h"
 
 
enum
{
	M_PRE_ORDER,
	M_LEVEL_ORDER
};
 
typedef TiXmlNode	CXmlNode;
 
class	CXmlFile
{
public:
	CXmlFile() {}
	~CXmlFile() {}
 
public:
	CXmlNode		*Open(const char *file);
	CXmlNode		*NextNode();
	CXmlNode		*CurrentNode() {return _node;}
 
public:
	void			SetTraversalMode(const int mode);
 
private:
	void		init_node_stack();
	void		init_node_queue();
 
private:
	TiXmlDocument               _doc;
	CXmlNode                      *_node;
	std::stack<CXmlNode *>   _stack;
	std::queue<CXmlNode *>  _fifo;
	int                                 _mode;
 
public:
	static int              NodeDepth(const CXmlNode *node);
	static const char   *GetAttribute(const CXmlNode *node, const char *key);
};
 
 
#endif	// _CXMLFILE_H
J'y ai donc rajout� le constructeur de copie suivant:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
CXmlFile(const CXmlFile &copy) : _doc(copy._doc), _node(copy._node), _stack(copy._stack), _fifo(copy._fifo), _mode(copy._mode) {}
Mais le probl�me de d�part persiste (surement parce que le constructeur de copie g�n�r� par d�faut doit �tre le meme que celui-ci)... j'avoue que c'est la premi�re fois que je suis amen� � cr�er un constructeur de copie � la mano. Quelqu'un pourrait m'aiguiller vers une solution?
Thx!