|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
||||||
Класс содержащий объект типа ofstream - не компилится!28.07.2012, 14:03. Показов 10486. Ответов 21
Метки нет (Все метки)
Здравствуйте! Помогите пожалуйста!=)
есть код:
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>::oper ator =" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> Сообщение диагностики возникло в созданной компилятором функции "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator =(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.вернуть_имя_файла);?
0
|
||||||
| 28.07.2012, 14:03 | |
|
Ответы с готовыми решениями:
21
Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему?
Объявить класс содержащий 1 переменную А закрытого типа. |
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 28.07.2012, 14:07 | |
|
Создается конструктор копирования по умолчанию, в котором идет по элементное присваивание. А объекты типа std::ofstream нельзя присваивать через оператор =. Определите явный конструктор копии, и в нем производите действия.
0
|
|
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
| 28.07.2012, 15:37 [ТС] | |
|
А что в конструкторе копирования написать, чтобы данное поле во всех экземплярах класса ссылалось на один и тот же файл?
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||||||||
| 28.07.2012, 17:43 | ||||||||||||||
|
с файлом Объекты кл. ofstream, ifstream создавать в main и передавать в эти методы Примерчик
конструктор копии и оператор присваивания для класса IOS_BASE находятся в разделе private потому
0
|
||||||||||||||
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|||
| 29.07.2012, 02:08 [ТС] | |||
|
0
|
|||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||||||
| 29.07.2012, 09:57 | ||||||||||||
|
затем выводим для каждого объекта Monstr свой файл ( конечно можно и в один файл записи добавлять )
file1: 23 file2: 53
0
|
||||||||||||
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
||
| 29.07.2012, 10:22 [ТС] | ||
|
Вы написали:
Во-вторых, где определение?) Добавлено через 9 минут Я не фига не понял, как оно работает? Ведь определений даже нету? И что это из себя представляет расскажите пожалуйста...
0
|
||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||||
| 29.07.2012, 10:24 | |||||||||||||
и оператор присваивания все равно недоступны ( private ) запрещаем присваивание, копирование объектов потому-что
0
|
|||||||||||||
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|||||||
| 29.07.2012, 10:40 [ТС] | |||||||
|
Так, енто понятно, ну, а если все таки объекты у меня в программе копируются...то что тогда...может можно как-нибудь с указателями? Я просто пробовал писать вот так:
0
|
|||||||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||
| 29.07.2012, 10:58 | |||||||||||
выносить из методов работайте внутри методов открыли - записали- закрыли
1
|
|||||||||||
|
|
|||||||||||
| 29.07.2012, 11:44 | |||||||||||
1
|
|||||||||||
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
| 29.07.2012, 13:48 [ТС] | |
|
Можно еще кстати его как статическое поле объявить: static std::ofstream out;=)
0
|
|
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|
| 29.07.2012, 13:53 [ТС] | |
|
хорошо, спасибо)
0
|
|
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|
| 29.07.2012, 14:06 | |
|
Итак, для использования fstream как члена класса требуются веские основания. Но если такие основания есть и требуется обеспечить копирование объектов класса, содержащего какой-либо разделяемый ресурс (не только fstream), то можно воспользоваться "умными" указателями с подсчётом ссылок, например std::shared_ptr (для C++11) или boost::shared_ptr.
0
|
|
|
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
|
|||||||||||
| 29.07.2012, 23:24 [ТС] | |||||||||||
|
ведь для использования shared_ptr надро подключить
Добавлено через 23 минуты Я правильно все сделал?
В чем различие между shared_ptr из <boost/shared_ptr.hpp> и из <memory> ? И почему файл не находится?
0
|
|||||||||||
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 30.07.2012, 02:06 | ||
|
Если нужен буст и он уже установлен, то надо указать компилятору директорию с заголовочными файлами (ту, в которой расположена директория boost с заголовками). Где-то в настройках проекта, наверное, я не знаток VS2010. В коде, на первый взгляд, всё нормально. В принципе деструктор и конструктор копии при этом необязательны, но и хуже от них не станет.
1
|
||
| 30.07.2012, 02:06 | |
|
Помогаю со студенческими работами здесь
20
Сериализовать класс, содержащий экземпляры других классов и листы с объектами типа object Создать класс вектор, содержащий элементы типа long double, размерность вектора Объявить класс, содержащий поле целого типа две константы, задающие допустимый диапазон Создайте класс Тест, содержащий две закрытые переменные типа int с именами count и max
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|