cout 과 ofstream 으로 동시 출력해주는 stream 을 정의하려면?
글쓴이: jinserk / 작성시간: 금, 2011/05/27 - 7:39오후
안녕하세요..
A, B, C, ... 등등을 출력스트림으로 뽑아야 하는데, 파일과 화면에 둘다 보여지게 하고 싶습니다.
기왕하는거 좀더 OO 적으로 해보고 싶어서 logstream 을 하나 만들고 싶은데요.
화면에 찍거나 파일에 찍거나 하는걸 선택할 수 있도록요.
처음엔 ofstream 을 상속해서 만들어 보려고 했더니 엄청난 에러가 쏟아지네요.
검색을 해보니 ostream 을 상속받지 말라는 말도 보이구요.
그래서 ofstream 객체를 포함하는 log 클래스를 정의하고 operator<< 를 정의해주는 식으로 갔는데,
이렇게 하면 logfs << A << B 와 같은 모양으로 쓸수는 있지만
print(ostream& os) 와 같은 형태의 함수에 인자로 넣을 수가 없습니다.
ostream 속성을 가지면서 cout 과 ofstream 으로 동시 출력하는 클래스를 어떻게 만드는게 정석인가요?
감사합니다.
Forums:
오래 되서 잘 기억은 안나지만 streambuf
오래 되서 잘 기억은 안나지만 streambuf 계층에서 처리해주는 게 정석이었던 것 같군요.
감사합니다. 그런데, 어차피 streambuf를
감사합니다.
그런데, 어차피 streambuf를 상속해서 logstreambuf 를 정의하고 이걸 포함하는 ostream 상속 객체를 만든다고 해도, 내부 streambuf 가 하나밖에 없을 텐데, cout 과 filebuf 를 동시에 건드려줄 수 있나요?
제가 잘 이해를 못하는 건지..
Leo.
5 #ifndef __LOGSTREAM_H__
여기까진 만들었는데.. 막상 아래와 같은 에러가 나네요.
뭐.. streambuf 의 멤버함수 overflow 와 sync 가 protected 이니 당연하긴 한데..
대체 streambuf 안에 두개의 서로 다른 sreambuf 를 어떻게 넣어야 하는건지 전혀 감을 못잡겠습니다. :(
조언 부탁드립니다.
댓글 달기