Какой оператор мне нужен для перегрузки? - PullRequest
1 голос
/ 02 марта 2012

Я хочу перегрузить оператор приемника, чтобы я мог сделать это: someClass >> myClass.

... где myClass - это класс, для которого мне нужно перегрузить оператор.* Надеюсь, что это имеет смысл.

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

>> является оператором.Вы хотите перегрузить operator>>.Подпись будет выглядеть так:

someClass& operator>>(someClass&, myClass&);
2 голосов
/ 02 марта 2012

Как указал @Mysticial, для этого вам нужно перегрузить operator>>.

Эта перегрузка может не быть членом myClass.Это должен быть либо элемент someClass, либо глобальная перегрузка.

class someClass { 
// ...
    someClass &operator>>(myClass &);
};

или:

someClass &operator>>(someClass &, myClass &);

Если оператор не / не может изменить состояниеобъекта someClass вы можете передать первый параметр по константной ссылке (в этом случае вы также вернете константную ссылку).

Конечно, возврат someClass на самом деле не являетсятребуется, но это обычно приемлемая практика для операторов такого типа (она позволяет объединять операторы в цепочку, например, a >> b >> c;)

0 голосов
/ 02 марта 2012

Вам нужно использовать аргумент-зависимый поиск ... Я сам не часто использовал его, но вам нужно перегрузить operator >> с помощью ADL (см. Ссылку).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...