![]() |
|
![]() ![]() ![]() |
|
5kill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Приветствую всех.
Возникла проблема с реализацией оператора присваивания для класса, содержащего CStdioFile. Получить копию CStdioFile мне не удалось... метод Duplicate() в нем не реализован почему-то. Попробовал вместо CStdioFile хранить ссылку, но тогда после копирования, когда удаляется временный объект вызывается деструктор, который благополучно закрывает файл по ссылке. Подскажите, плз, как обойти эти трудности. |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
Шеф, где код?
Это сообщение отредактировал(а) Alca - 16.6.2011, 18:13 |
|||
|
||||
5kill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Вот деструктор и оператор копирования для варианта со ссылкой на CStdioFile:
|
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
Думаю лучше всего хранить shared_ptr< CStdioFile * >
, а в деструкторе убрать
Это сообщение отредактировал(а) borisbn - 16.6.2011, 15:41 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
http://www.cs.caltech.edu/courses/cs11/mat...ie/cpp-ops.html
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
есть подозрение, что наличие оператора присваивания для объекта, содержащего обхект для чтения из файла, семантически некорректно
технические трудности, возникающие при его реализации - всего лишь следствие для того, чтобы дать полезный совет, было бы неплохо увидеть: 1. описание семантики класса, для которого понадобился operator= 2. описание причин, по которым он понадобился -------------------- qqq |
|||
|
||||
5kill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Полностью согласен с тем что архитектура такой реализации не блещет изяществом.
Однако в силу специфики использования данного класса это наиболее разумный по соотношению затрат к результату вариант. В итоге я отказался от оператора присваивания, использовав ссылки на объекты этого класса. Спасибо всем за помощь, многие советы были полезными. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |