Si, esatto stavo pensando di definire due operatori ed usarli come mi hai mostrato.

Si effettivamente anche io avevo pensato di usare un vettore di double ma poi la necessità di usare uno stream è nata dal fatto che potrei non conoscere la lunghezza e il tipo di dati in ingresso.

In ogni caso come potrei implementare:

ostream << classe_componente;
istream >> classe_componente;

ma più in generale:

classe_ingresso >> classe_componente1 >> classe_componente2 >> classe_uscita