Как заставить vc6 компилировать следующее:
//в хедере:
#ifndef HEADER_H
#define HEADER_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <ostream>
namespace kernel
{
class StreamBuf:public std::streambuf
{};
class LogStream: public std::ostream
{
public:
LogStream(std::streambuf * tt = new StreamBuf)
: std::ostream(tt)
{}
~LogStream()
{delete rdbuf();}
};
}
#endif // HEADER_H
//в .срр:
#include "header.h"
int main()
{
//
kernel::LogStream out;
out << "Death!";
return 0;
}
MinGW компилирует, vc6 ругается:
header.h(26) : error C2512: 'basic_ostream<char,class _STL::char_traits<char> >' : no appropriate default constructor available
header.h(26) : error C2614: 'LogStream' : illegal member initialization: 'ostream' is not a base or member
Использую STLPort последний; StreamBuf на самом деле пишет в файл, я порезал для краткости.