Есть ли способ реализовать operator->, а не только оператор *. Чтобы иметь следующий код:Как реализовать оператор-> для типа итератора?
Iterator<value> it = ...
i = (*it).get();
i = it->get(); // also works
Позвольте нам сказать, что тип значения имеет метод get. Когда итератор implemnted, как показано ниже:
template<T> class Iterator {
T operator*() { return ... }
T operator->() { return ... }
}
Вот ... это реализация получения правильного объекта T.
Как-то это не сработает, когда я реализую его таким образом. Кажется, я что-то неправильно понимаю.
Вы также можете найти пример здесь: http://www.boost.org/doc/libs/1_48_0/boost/smart_ptr/shared_ptr.hpp – nijansen
возможный дубликат [Перегрузка оператора] (http://stackoverflow.com/questions/4421706/operator-overloading) –
В частности, прочитайте «Операторы для указательных типов» [«Общие операторы для перегрузки»] (http: // stackoverflow. com/a/4421719/90527) от вопроса Майка, обращая внимание на подпись 'operator->'. – outis