Использование оператора извлечения для извлечения данных из сложной иерархии классов

1 — Похоже ли на правильный подход использовать операторы извлечения для извлечения некоторых данных не из файла, а из большой и сложной иерархии классов?

class ComplexInterface
{
//...
};

struct EXTRACTED_DATA
{
//...

friend ComplexInterface& operator>>(const ComplexInterface& interface, EXTRACTED_DATA& extracted)
{
extracted.m_member = interface.someAccessor().getData();
}
};

Было бы лучше просто сделать его методом-членом (void extractFromComplexInterface(const ComplxInterface&))

Есть ли лучшее решение ?

2 — Возможно ли обрабатывать это извлечение как обычную потоковую операцию? ComplexInterface станет istream, реализуя какую-то магическую функцию, в которой было бы сказано: «Я отправлю эти данные, затем то и это …». Затем EXTRACTED_DATA может использовать свой обычный оператор извлечения (friend istream& operator>>(istream&, EXTRACTED_DATA&)), который уже определен для чтения из файлового потока.

Если это возможно, то как?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]