Re: VC6 и наследование от классов стандартных потоков
От: longlivedeath  
Дата: 24.08.03 10:41
Оценка:
vc6 отстой.
компилируется только так:
//header

#ifndef HEADER_H
#define HEADER_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <ostream>

namespace kernel
{
  template <class charT, class traits = std::char_traits<charT> >
  class basic_StreamBuf : public std::basic_streambuf<charT, traits>
  {
    public:
      basic_StreamBuf(){}
  };

  typedef basic_StreamBuf<char> StreamBuf;
  typedef basic_StreamBuf<wchar_t> wStreamBuf;

  template <class charT, class traits = std::char_traits<charT> >
  class basic_LogStream: public std::basic_ostream<charT, traits>
  {
  public:
    basic_LogStream(std::basic_streambuf<charT, traits> * tt)
      : std::basic_ostream<charT, traits>(tt)
    {}
    
    ~basic_LogStream()
    {delete rdbuf();}
  };

  typedef basic_LogStream<char> LogStream;
  typedef basic_LogStream<wchar_t> wLogStream;

}

#endif // HEADER_H

//cpp
#include <iostream>
#include "header.h"

int main()
{
  //
  kernel::LogStream out(new kernel::StreamBuf);

  out << "Death!";
  std::cout << "Doo";
  return 0;
}


MinGW компилирует в обоих случаях.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.