Форум программистов, компьютерный форум CyberForum.ru

Класс содержащий объект типа ofstream - не компилится! - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
Alberto_Timakov
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 183
28.07.2012, 14:03     Класс содержащий объект типа ofstream - не компилится! #1
Здравствуйте! Помогите пожалуйста!=)

есть код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <fstream>
 
    class Monstr
    {
        private:
            std::ofstream out;
        public:
            Monstr() : out("test", std::ios::app | std::ios::out){}
            ~Monstr();
    };
 
 
int main(void)
{
    Monstr Y;
    Monstr X(Y);
    system("pause");
    return 0;
}
есть ошибка:

1>c:\program files\microsoft visual studio 10.0\vc\include\ostream(604): error C2249: std::basic_ios<_Elem,_Traits>::operator =: нет доступного пути к private член, объявленному в виртуальном базовом классе "std::basic_ios<_Elem,_Traits>"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\ios(177): см. объявление "std::basic_ios<_Elem,_Traits>::operator ="
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> Сообщение диагностики возникло в созданной компилятором функции "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator =(const std::basic_ostream<_Elem,_Traits> &)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1>


Почему?

Добавлено через 5 минут
И если размещают объекты класса [i/o]fstream в классе, то как? Или что-то в конструкторе копирования для этого делают обычно? И еще, как вернуть имя файла, на который ссылается объект класса [i/o]fstream. Т.е.

ofstream out1("test");
ofstream out2(out.вернуть_имя_файла);?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2012, 14:03     Класс содержащий объект типа ofstream - не компилится!
Посмотрите здесь:

C++ не удаётся создать безымянный объект типа vector моего типа
Объявить класс содержащий 1 переменную А закрытого типа. C++
интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект C++
C++ Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
C++ Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alberto_Timakov
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 183
30.07.2012, 11:01  [ТС]     Класс содержащий объект типа ofstream - не компилится! #21
Спасибо!+)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2012, 16:04     Класс содержащий объект типа ofstream - не компилится!
Еще ссылки по теме:

C++ Определить класс химический элемент, содержащий информацию о названии элемента его химических свойствах. Определить класс медикаменты, содержащий разн
C++ Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
C++ Создайте класс Тест, содержащий две закрытые переменные типа int с именами count и max

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
31.07.2012, 16:04     Класс содержащий объект типа ofstream - не компилится! #22
Цитата Сообщение от Alberto_Timakov Посмотреть сообщение
C++
1
2
3
4
5
6
            ~Monstr()
            {
                //std::ofstream out("test", std::ios::app | std::ios::out);
                *out << "destructor" << std::endl;
                (*out).close();
            }
Всё-таки, пожалуй, в таком виде деструктор скорее вреден, чем полезен.
Допустим, создали объект obj1, потом он скопировался в объект obj2, потом один из этих объектов разрушили. При этом закрывается общий файл. Не надо явно закрывать поток в деструкторе, он и сам прекрасно закроется, когда будет разрушаться объект потока.
Yandex
Объявления
31.07.2012, 16:04     Класс содержащий объект типа ofstream - не компилится!
Ответ Создать тему
Опции темы

Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru