Bonjour à tous,
Je voudrais faire ceci :
Mais apparement il n'y a pas de surcharge de l'opérateur =, existe-t-il une fonction de copie ? Ou un quelconque moyen de faire ?Code:
1
2
3 CDatabase db1, db2; db1 = db2;
Merci.
Version imprimable
Bonjour à tous,
Je voudrais faire ceci :
Mais apparement il n'y a pas de surcharge de l'opérateur =, existe-t-il une fonction de copie ? Ou un quelconque moyen de faire ?Code:
1
2
3 CDatabase db1, db2; db1 = db2;
Merci.
et ben si;)Citation:
Mais apparement il n'y a pas de surcharge de l'opérateur =
Code:type& operator=(type const &val)
bah moi je dirais qu'on s'en moque un peu nan?Citation:
Tout dépend de ce qu'est exactement CDatabase, en l'occurrence on a besoin d'un peu plus d'information pour pouvoir répondre...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CDatabase & operator=(CDatabase const &val) { //il fait ce qu'il veut ici } //ou bien CDatabase & operator=(int &val) { //s'il veut pouvoir ecrire CDatabase = int... } template<class T> CDatabase & operator=(T const&val) { //s'il veut pouvoir ecrire CDatabase = le reste des types! }
S'il ne peut pas modifier le code de la classe ça réduit tout de suite les possibilités.
Par exemple s'il s'agit de ce CDatabase-là...
Mis à part cela si CDatabase fait partie d'une hiérarchie de classe c'est vraisemblablement pas très malin de lui ajouter un opérateur d'affectation, c'est la porte ouverte aux problèmes de slicing.
edit: ah tiens entre temps le sujet a été déplacé dans le forum MFC
MAT.
Bonjour,
Je me suis déjà posé la question. Et je pense que les créateurs de cette classe ont délibérément choisi de ne pas implémenter de constructeur par copie et d'opérateur d'affectation.
En ce qui me concerne, je me suis débrouillé sans, et je pense que c'est ce qu'il y a de mieux à faire...
Bonjour,
Ok je pense également que je vais me débrouiller sans, merci en tout cas pour les réponses.
PS : Je crois que toutes les classes qui héritent de CObject sont dans ce cas, en tout cas la classe CRecordSet est dans le même cas.
Ok, c'est noté! ;)
Merci beaucoup en tout cas.
:resolu: