Obiekt strumienia wyjściowego jako atrybut klasy

0

Wpadłem na pomysł, co by nie przekazywać do wszystkich metod klasy strumienia wyjściowego,
tylko utworzyć jako atrybut obiekt strumienia, przekazanego w konstruktorze, z którego będą mogły korzystać
te metody (mniej argumentów = większa czytelność).

Poglądowa klasa:

template <typename streamOut>
class CollectionPrinter {
private:
    streamOut os_;
public:
    CollectionPrinter(streamOut& os)
    {
        os_ = os;
    }

    // metody
}; 

Wywołanie main():

CollectionPrinter<ostream> printer(cout); 

Czy da się coś takiego wykonać? Nie ma pomysłu jak to zrobić.

3

Możesz trzymać referencję/wskaźnik.

template<typename OutputStream>
class CollectionPrinter
{
OutputStream& s;
public:
CollectionPrinter(OutputStream& s) : s{s} {}
};
0

Czy koniecznie template? Może zwykłe ostream&.

1 użytkowników online, w tym zalogowanych: 0, gości: 1