[C++] namespace z zadeklarowanym strumieniem cout

0

Potrzebuję zaprojektować przestrzeń nazw, która będzie obsługiwała mi strumień wyjściowy. Tak żeby można było obsłużyć poniższy kod:

std::cout << "Wysylamy na standardowe wyjscie";
graph::cout << "Wysylamy na wyjscie okna graficznego";

gdzie graph to przestrzeń nazw odnosząca się do okna utworzonego w SDL'u. Domyślam się, że będzie trzeba zbudować klasę dziedziczącą z ostream, i że będzie trzeba w niej coś przeciążyć. Niestety po kilkugodzinnych poszukiwaniach w internecie jedyne artykuły na jakie natrafiłem to proste tutoriale ala std::cout << "Hello world!";

Czy mógłby mi ktoś powiedzieć jak zamiplementować takie coś?

0

Prawda jest taka, że musisz stworzyć swoją klasę dziedziczącą po streambuf i ją podmienić w zwykłym/swoim strumieniu ostream.
w MyStreambuf definiujesz, gdzie i jak mają pojawiać się dane a w MyOstream (jeśli definiujesz swój strumień) jedynie co masz zrobić to zdefiniować potrzebne konstruktory i wykonać połączenie z instancją MyStreambuf.
Poszukaj pod słowami kluczowymi: streambuf rdbuf ostream.

Gdzieś widziałem przykład ja w Builderze skojarzyć TMemo ze strumieniem, jak znajdę to podam ci linka.

0

A nie można stworzyć klasy, która obsługuje wyświetlanie tekstu w SDLu i od razu stworzyć obiekt tej klasy o nazwie cout?
class gstream{
} cout;

Potem opakować to w przestrzeń nazw graph.

0

Dobra znalazłem dwie strony:
http://uw714doc.sco.com/en/SDK_clib/_Deriving_New_streambuf_Classes.html
http://www.experts-exchange.com/Programming/Languages/CPP/Q_10016577.html

Na początek wystarczy by załapać w czym problem. Resztę znajdź już sobie sam. Jak znajdziesz coś lepszego to umieść tu linki do tych stron.

@gosc_z_pytaniem:
oczywiście, że można, ale ile w to pracy trzeba włożyć? Pisanie większej części kodu od początku, nie jest przyjemne. Podmieniając streambuf trzeba napisać na nowo dwie proste metody +konstruktory i tyle.

0

Dzięki wam wszystkim za pomoc, szczególnie tobie MarekR22 za podesłanie fajnych linków. Nie sądziłem, że tak szybko dacie mi odpowiedź. Co do podejścia gościa_z_pytaniem - wydaje mi się, że twoja metoda jest dobra, a co najważniejsze prosta;

jeszcze raz thx;

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