Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20
1

Доступ к одному объекту fstream из разных функций

03.04.2012, 13:54. Показов 1349. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте форумчане.
Написал приложение на CB6 c++. Глобально объявил несколько объектов fstream в модуле (типа fstream abc; ). Создал несколько функций (не являются членами какого-либо класса), одна из которых открывает файл, другие используют, последняя закрывает при завершении программы.
Программа компилируется, прекрасно работает, файлы читаются и пишутся, но при попытке собрать автономный exe возникает ошибка Access violation at address xxxxxxxx Read of Address 00000000.
Это как раз и вызвано тем, что объекты fstream обявлены глобально (при внесении объявления в тело функции - ошибка пропадает).
Вопрос: кто знает как правильно создать объект fstream так, чтобы иметь возможность использовать его как глобальную переменную в разных функциях? Заранее извиняюсь за безграмотность в данном вопросе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2012, 13:54
Ответы с готовыми решениями:

Доступ к одному объекту из разных классов
здравствуйте уважаемые! подскажите как реализовать доступ к одному и тому же объекту из разных...

Доступ к одному и тому же объекту из двух списков
Есть 2 списка(Gournal и bannerQueue) содержащие объекты класса. Беру из 1 списка некоторые и...

Совместный доступ к объекту из разных форм
Такой вопросик. Есть несколько форм в проекте. Есть так же экземпляр определённого класса. Нужно...

Два разных АЦП разных устройств к одному датчику
похожий вопрос вроде поднимался по-моему пару лет назад. но теперь условия несколько иные, и...

3
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
03.04.2012, 15:15 2
сталкивался с подобной проблемой. вариант 1 (не проверенный и плохо переносимый в плане дописывания префикса перед обращением к потоку) - создание потока внутри конструктора глобального объекта. вариант 2 (рабочий чуть более переносимый так как заменяются только точки на стрелку) - использование указателя на поток. поток создается динамически в начале программы и удаляется перед выходом.

Добавлено через 1 минуту
...в чем проблема так и не докопался, чисто теоретически если кто знает - скажите, я так полагаю что то там не то шаблон делает в глобальной области, может какие-то из шаблонов к моменту создания объекта еще не успели сделать чего то.. хз
0
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20
03.04.2012, 17:39  [ТС] 3
Цитата Сообщение от vxg Посмотреть сообщение
вариант 2 (рабочий чуть более переносимый так как заменяются только точки на стрелку) - использование указателя на поток. поток создается динамически в начале программы и удаляется перед выходом.
Благодарю, так и сделал. Вместо (fstream abc; ) (fstream* abc; +где-то в коде abc = new fstream; ). Стрелки вполне сгодятся.
0
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20
05.04.2012, 08:30  [ТС] 4
Кстати, когда используются стрелки и динамическое создание объекта, знаток кода либо ругается, либо открывается через раз. Нужно иметь это ввиду, тем кто его не отключает.
0
05.04.2012, 08:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2012, 08:30
Помогаю со студенческими работами здесь

Как присвоить несколько параметров одному объекту?
Возможно ли реализовать следующее: в базе данных у меня есть пациент, у которого есть основной...

Что будет, если два разных потока попытаются отправить одновременно одному клиенту два разных пакета
Здравствуйте! Имеется вот такой незамысловатый метод отправки пакетов на сокет клиента ...

Доступ к объекту
Доброго времени суток. Начал изучать юнити, но никак не могу понять, как получить доступ к объекту...

Доступ к объекту класса
Есть 3 класса MainWindow(Основной) и 2 второстепенных Controll и Mlist. // MainWindow.h #ifndef...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru