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 :

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;
Pour avoir le code complet :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TimeOBJ now_value = objTimeStampOBJ.get()
Deviendrait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TimeOBJ now_value = objTimeStampOBJ;
J'ai l'erreur :
Operande are TimeOBJ and TimeStampOBJ
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.
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
(Qui est l_value et qui est r_value)

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)