Obiekt strumienia wyjściowego jako atrybut klasy

Obiekt strumienia wyjściowego jako atrybut klasy
carlosmay
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Pabianice
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:

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

    // metody
}; 

Wywołanie main():

Kopiuj
CollectionPrinter<ostream> printer(cout); 

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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
3

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

Kopiuj
template<typename OutputStream>
class CollectionPrinter
{
OutputStream& s;
public:
CollectionPrinter(OutputStream& s) : s{s} {}
};
LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin
  • Postów: 61
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.