Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
#1

Хранение ссылок на файловые потоки - C++

10.07.2015, 18:30. Просмотров 255. Ответов 4
Метки нет (Все метки)

Добрый вечер.

Столкнулся с ошибкой C2280 - невозможность использовать конструктор копирования для ifstream.

Пытаюсь заполнить приоритетную очередь парами вида <std::string, std::ifstream&>, но при добавлении в очередь нового элемента возникает ошибка (строка 12). Не могу понять, почему, ведь в контейнер должна помещаться ссылка, а не объект.

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    std::vector<std::ifstream> fileStreams;
 
    using UUIDAndStream = std::pair<std::string, std::ifstream&>;
    using UUIDContainer = std::vector<UUIDAndStream>;
    std::priority_queue<UUIDAndStream, UUIDContainer, UUIDComparator> UUIDQueue;
 
    std::string UUIDbuf;
 
    for (auto &stream : fileStreams)
    {
        stream >> UUIDbuf;
        UUIDQueue.push(std::make_pair(UUIDbuf, stream));
    }


Подскажите, пожалуйста, как можно выкрутиться из данной ситуации?
Пытался использовать std::reference_wrapper, но ничего хорошего не вышло.

Добавлено через 13 часов 33 минуты
Ну, конечно, есть более простой вариант с хранением в очереди индекса потока в векторе fileStreams. Но, может быть, есть более умный путь.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 18:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хранение ссылок на файловые потоки (C++):

Файловые потоки в Си и С++ - C++
Вот код. Нужно использовать чтение из файла и запись в файл, такое же как и в языке СИ (без использования библиотек которых нет в СИ). Я...

Файловые потоки - C++
Компилятор ругается при создании экземпляра класса ofstream. Среда разработки - Visual C++ 2008. Выдает error C2079: 'fileout' uses...

Файловые потоки - C++
Для каждого автобуса автопарка укажите его номер, маршрут, фамилию и инициалы шофера, время в пути. Предусмотреть поиск по фамилии шофера.

файловые потоки - C++
Помогите найти ошибку! Программа из книги Дейтелов!Не понимаю что я пропустил .. ------ Построение начато: проект: potok,...

Файловые потоки - C++
Структура enum status {Boss=1, Manager}; struct Worker { string Name; int Year; ...

Файловые потоки - C++
1 задача) Дан текстовый файл. Напечатать все строки, в которых имеется хотя бы один пробел. 2 задача) Дан файл f, элементами которого...

4
castaway
Эксперт С++
4887 / 3022 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
10.07.2015, 21:12 #2
Почему не использовать указатель вместо ссылки?
1
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.07.2015, 21:30 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ох, опасное это дело, хранить указатели на элементы вектора. Одна реаллокация - и бум!
К ссылкам, кстати, это тоже относится.
P.S. Для любителей риска: загвоздка в вызове make_pair. Надо было использовать std::ref на stream или вызывать конструктор pair явно.
1
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
11.07.2015, 17:20  [ТС] #4
Спасибо. Думаю, тогда лучше остановиться на индексах. Так безопаснее.
0
castaway
Эксперт С++
4887 / 3022 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
11.07.2015, 17:56 #5
Цитата Сообщение от Merovingean Посмотреть сообщение
Спасибо. Думаю, тогда лучше остановиться на индексах. Так безопаснее.
Думаю стоит пересмотреть алгоритм. Более чем уверен что можно сделать проще.
0
11.07.2015, 17:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 17:56
Привет! Вот еще темы с ответами:

Бинарные файловые потоки - C++
Нужно написать две функции, одна из них сохраняет перечень в бинарный файл, другая считает данные из этого же бинарного файла. Читал про...

Файловые потоки данных - C++
Помогите, пожалуйста! Надо написать программу, которая считывает из файла строки и сохраняет их в другой файл в обратном порядке. Я...

Бинарные файловые потоки - C++
Существует ли стандартный вариант? Как обозван тип такого потока для записи? Для чтения? Чтоб бинарники писать операторами типа so&lt;&lt;d; (so...

Файловые указатели. Потоки - C++
Вот какой вопрос у меня появился. Пусть есть 2 указателя, связанных с одним и тем же файлом открытым в режиме read. Если я считываю...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru