Bonjour à tous.
Je rencontre un petit soucis sur la surcharge d'opérateur.
C'est un domaine de programmation que j'utilise depuis peu.
Voici un extrait de code :
Pour avoir le code complet :
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 // .h class TimeStampOBJ{ public : TimeStampOBJ(); TimeOBJ &getTimeFromLastCheck(); TimeOBJ &getTimeFromBeginning(); TimeOBJ operator=( TimeStampOBJ &obj ); private : TimeOBJ now=0; void compute(); } // .cpp TimeOBJ TimeStampOBJ::operator=( TimeStampOBJ &obj ){ compute(); return( now ); } // Projet TimeStampOBJ objTimeStamp = TimeStampOBJ(); TimeOBJ objNow = objTimeStamp;
www.github.com/YannChansigaud/TimeStampOBJ
www.github.com/YannChansigaud/TimeOBJ
TimeStampOBJ permet de stocker la valeur de temps au delà de uint32_t en microsecondes en utilisant des objets de type TimeOBJ. Fonctionne très bien.
Cependant, je souhaiterais implémenter l'opérateur =
Afin de remplacer l'appel de la méthode get() qui renvoie un objet TimeOBJ :
Deviendrait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TimeOBJ now_value = objTimeStampOBJ.get()
J'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TimeOBJ now_value = objTimeStampOBJ;
J'ai justement suivi des tutos, cours et guidance sur internet pour implémenter ses opérateurs surchargés et, du reste, [ ], =, +=, -=, ==, /=, ++, --, <, >, <=, >= sont implémentés et fonctionnels dans la classe TimeOBJ.Operande are TimeOBJ and TimeStampOBJ
Cependant, je ne récupère qu'une valeur à zéro sur l'opérateur = dans la classe TimeStampOBJ. Je sais que je suis passé à côté de quelque chose mais j'ai trop la tête dedans et je vois plus rien...
De plus, je n'ai pas trop saisie comment faire la différence entre un l'opérateur permettant :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part uint32_t = TimeOBJ
(Qui est l_value et qui est r_value)
Code : Sélectionner tout - Visualiser dans une fenêtre à part TimeOBJ = uint32_t
Aussi, dans l'opérateur += ou -= je ne comprends pas pourquoi certain tutos indiquent que la méthode doit renvoyer l'objet alors que la méthodes s'applique sur les variables privée même de l'instanciation et, de plus, mes méthodes en void fonctionnent.
PS: je suis sur mon téléphone (c'est pas évident)
Partager