Erreur de compilation étonnante

Signaler
Messages postés
20
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2004
-
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
Voici la fonction que je crée :

Déclaration :
public:
int traitement_bmp(CBitmap accessoire,
CString CheminImages,
CString NomImages,
int TypeImage);

Definition :
int CJFADlg::traitement_bmp(CBitmap accessoire, CString CheminImages, CString NomImage, int TypeImage)
{ (rien) ; return 0;}

Appel :
traitement_bmp(Bmp_glass0,
m_chemin,
NomImage,
TypeImage);

Avant même de développer cette fonction G cette erreur :

error C2664: 'traitement_bmp' : cannot convert parameter1 from 'class CBitmap' to 'class CBitmap'

No copy constructor available for class 'CBitmap'

Si qq'un a déjà eu une telle erreur ...
Merci d'avance pour me donner qq pistes ...

5 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
il n'y a pas de constructeur par recopie disponible pour la classe CBitmap, il faut utiliser un pointeur ou une réferrence.
Messages postés
20
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2004

Merci !!! :) :) :)
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2
pareil

be linux
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
moi j'aurai plutot dit qu'il faille redefinir le constructeur par recopie (car il y en a un)
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
en MFC, tous les objets encapsulant des handles de l'API Win32 doivent être passés en référrence ou en pointeur car recopier le handle ne suffit pas (sinon lorsque le premier objet sera détruit, il fermera le handle qui ne sera pas valide pour l'autre objet).

POur les bitmaps, on peut à la rigueur recréer un autre handle HBITMAP avec une copie du bitmap, mais cela requiert des ressources inutiles.