Bonjour,

Un bout de code qui se compilait sans problème dans VC2003 pose problème dans VC2005...

C'est une histoire de constructeur implicite...mais sur un typedef...

Dans mon .h ..Début de déclaration de ma classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
class CProcessList {
	protected:
		typedef std::list<CProcess *>		process_list;
		typedef process_list::iterator	process_iterator;
 
		process_list		m_listProcesses;
		process_iterator	m_listIterator;
 
		CProcessList();
public : .....
Définition du constructeur dans mon .cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
CProcessList::CProcessList()
	: m_listIterator(0)
{
}
Le compilateur me dit (et c'est assez compréhensible) qu'il n'a pas de construcuteur de process_iterator prenant un entier en argument.. Sauf que process_iterator étant un typedef, je ne sais pas trop ou gérer tout ca...

L'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
1>.\Processes.cpp(186) : error C2664: 'std::list<_Ty>::_Iterator<_Secure_validation>::_Iterator(const std::list<_Ty>::_Iterator<_Secure_validation> &)' : impossible de convertir le paramètre 1 de 'int' en 'const std::list<_Ty>::_Iterator<_Secure_validation> &'
1>        with
1>        [
1>            _Ty=CProcess *,
1>            _Secure_validation=true
1>        ]
1>        Raison : impossible de convertir de 'int' en 'const std::list<_Ty>::_Iterator<_Secure_validation>'
1>        with
1>        [
1>            _Ty=CProcess *,
1>            _Secure_validation=true
1>        ]
1>        Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
Une idée ?