¿Hay alguna manera de implementar operador->, no solo el operador *? Para que funcione el código siguiente:¿Cómo implementar operador-> para tipo de iterador?
Iterator<value> it = ...
i = (*it).get();
i = it->get(); // also works
Digamos que el tipo de valor tiene el método get. Cuando iterador es implemnted de la siguiente manera:
template<T> class Iterator {
T operator*() { return ... }
T operator->() { return ... }
}
aquí ... es una implementación de conseguir objeto T derecha.
De alguna manera no funcionará cuando lo implemente de esta manera. Creo que no entiendo bien algo.
También se puede encontrar un ejemplo aquí: http://www.boost.org/doc/libs/1_48_0/boost/smart_ptr/shared_ptr.hpp – nijansen
posible duplicado de [Sobrecarga del operador] (http://stackoverflow.com/questions/4421706/operator-overloading) –
En particular, lea "Operadores para tipos similares a punteros" de ["Operadores comunes para sobrecargar"] (http: // stackoverflow. com/a/4421719/90527) de la pregunta a la que se une Mike, prestando especial atención a la firma de 'operator->'. – outis