chainage d'appel surcharge operator

chainage d'appel surcharge operator - C++ - Programmation

Marsh Posté le 09-11-2009 à 23:18:12    

Code :
  1. class VisualizableVector
  2. {
  3. public:
  4. class proxy
  5. {
  6. public:       
  7. proxy (vector<int> *v) : vect (v)
  8. {
  9.   std::cout << "Before size is: " << vect->size ();
  10. }
  11. vector<int> * operator -> ()
  12. {
  13.   return vect;
  14. }
  15. ~proxy ()
  16. {
  17.   std::cout << "After size is: " << vect->size ();
  18. }
  19. private:
  20. vector <int> * vect;
  21. };
  22. VisualizableVector (vector<int> *v) : vect(v) {}   
  23. proxy operator -> ()
  24. {
  25. return proxy (vect);
  26. }
  27. private:
  28. vector <int> * vect;
  29. };


 

Code :
  1. int main()
  2. {
  3.   VisualizableVector vector (new vector<int> );
  4.   vector->push_back (10);
  5. }


 
//vector->push_back (10);
 
vector.operartor ->() et aprés ? comment l'operator -> de l'objet proxy est appelé ??
 
(vector.operator ->()).operator ->()
 
comment le compilo arrive à faire ça tout seule comme un grand ? merci


Message édité par Glock 17Pro le 09-11-2009 à 23:20:10

---------------
.
Reply

Marsh Posté le 09-11-2009 à 23:18:12   

Reply

Marsh Posté le 10-11-2009 à 07:01:02    

-> a un comportement spécial qui fait que les appels se chainent tous seul.
 

Citation :


A pointer dereference operator must be a member function. It has additional, atypical constraints: It must return an object (or reference to an object) that also has a pointer dereference operator, or it must return a pointer that can be used to select what the pointer dereference operator arrow is pointing at.


 
de Thinking in C++

Reply

Marsh Posté le 10-11-2009 à 07:50:35    

nice

Reply

Marsh Posté le 10-11-2009 à 12:37:32    

Tiens je connaissais pas ce cas particulier :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed