Проблема с потоками ввода-вывода
От: Аноним  
Дата: 25.09.07 05:10
Оценка:
Здравствуйте, уважаемые!
Возникла такая проблема. Почему-то при использовании экземпляра класса файлового потока ofstream в качестве свойства своего класса, проект не компелируется.
Пример кода:


#include <Windows.h>
#include <iostream>
#include <fstream>

using namespace std;

class Log
{
private:
ofstream out;
public:

Log(): out("log.txt")
{}

Log operator<<(int m)
{
out << m;
return *this;
}
};

int main()
{
Log l;
return 0;
}


Пользуюсь средой MSVS 2005.
Выдает следующую ошибку:
error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

Ошибка в том месте, где объявлены как закрытые конструктор копий и оператор присваивания класса basic_ios.
Их реализация по понятным причинам отсутствует.

Причем, что странно, на шестой студии (MSVS 6.0) данный код без проблем компилируется.

Что еще более странно, при небольшом видоизменении класса Log, компилятор MSVS 2005 перестает ругаться:


class Log
{
private:
ofstream *pout;
public:

Log(): pout(NULL)
{
pout = new ofstream("log.txt");
}
~Log()
{
delete pout;
}

Log operator<<(int m)
{
*pout << m;
return *this;
}

};


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