Czy istnieje sposób na wdrożenie operatora->, nie tylko operatora *. Aby mieć następujący kod:Jak zaimplementować operator-> typ iteratora?
Iterator<value> it = ...
i = (*it).get();
i = it->get(); // also works
Powiedzmy, że typ wartości ma metodę get. Kiedy Iterator jest implemnted jak poniżej:
template<T> class Iterator {
T operator*() { return ... }
T operator->() { return ... }
}
... Tutaj jest implementacją uzyskanie właściwej obiektu T.
Jakoś to nie zadziała, kiedy wdrożę go w ten sposób. Chyba coś źle zrozumiałem.
Można również znaleźć przykład tutaj: http://www.boost.org/doc/libs/1_48_0/boost/smart_ptr/shared_ptr.hpp – nijansen
możliwy duplikat [Przeciążenie operatora] (http://stackoverflow.com/questions/4421706/operator-overloading) –
W szczególności przeczytaj "Operatory dla typów podobnych do wskaźnika" ["Common operatory to overload"] (http: // stackoverflow. com/a/4421719/90527) z pytania, do którego Mike prowadzi odnośnik, zwracając szczególną uwagę na podpis operatora '>. – outis