Bonjour,

j'ai un petit soucis avec un constructeur de recopie,
j'ai une classe qui contient un CStringList m_slListe, j'ai déclaré ces constructeurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
CCustomStringList::CCustomStringList (void)
{
}
 
CCustomStringList::CCustomStringList (CCustomStringList & liste)
{
	POSITION p = liste.m_slListe.GetHeadPosition();
	while (p != NULL)
	{
		m_slListe.AddTail(liste.m_slListe.GetAt(p));
	}
}
je redéclare l'opérateur = :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
void CCustomStringList::operator = (const CCustomStringList & liste)
{
	Clear();
	POSITION p = liste.m_slListe.GetHeadPosition();
	while (p != NULL)
	{
		m_slListe.AddTail(liste.m_slListe.GetAt(p));
	}
}
mon soucis apparait lors de la redeclaration de l'operateur +:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CCustomStringList CCustomStringList::operator + (const CCustomStringList & liste)
{
	CCustomStringList somme(liste);
 
	POSITION p = liste.m_slListe.GetHeadPosition();
	while (p != NULL)
	{
		m_slListe.AddTail(liste.m_slListe.GetAt(p));
	}
	return somme;
}
la ligne CCustomStringList somme(liste); me retourne :

no copy constructor available or copy constructor is declared 'explicit'
alors que quand je l'utilise simplement hors de la classe ex :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
CCustomStringList a();
CCustomStringList b(a);
il ne semble pas y avoir de soucis

cela peut venir d'ou ?