auto_ptr::release
От: promko Украина  
Дата: 17.07.03 15:57
Оценка:
Hello, All!

Скажите, пожалуйста, а зачем нужны такие складности при реализации auto_ptr::release:
_Ty *release() const _THROW0() 
{((auto_ptr<_Ty> *)this)->_Owns = false;  file://(1)
return (_Ptr); }

почему вместо строчки (1) нельзя прямо написать?:
_Owns = false;


With best regards, Roman Panas
Posted via RSDN NNTP Server 1.6
Re: auto_ptr::release
От: Yacha Россия  
Дата: 17.07.03 16:03
Оценка:
Здравствуйте, promko, Вы писали:

P>Hello, All!


P>Скажите, пожалуйста, а зачем нужны такие складности при реализации auto_ptr::release:

P>
P>_Ty *release() const _THROW0() 
P>{((auto_ptr<_Ty> *)this)->_Owns = false;  file://(1)
P>return (_Ptr); }
P>

P>почему вместо строчки (1) нельзя прямо написать?:
P>
P>_Owns = false;
P>


P>With best regards, Roman Panas

Для того чтобы с this снять const
... << RSDN@Home 1.0 beta 6a >>
Re: auto_ptr::release
От: Михаил Трухманов Россия  
Дата: 17.07.03 16:03
Оценка:
Здравствуйте, promko, Вы писали:

P>Скажите, пожалуйста, а зачем нужны такие складности при реализации auto_ptr::release:

P>_Ty *release() const _THROW0() 
P>{((auto_ptr<_Ty> *)this)->_Owns = false;  file://(1)
P>return (_Ptr); }


Похоже, надо снять const с this
Re[2]: auto_ptr::release
От: promko Украина  
Дата: 17.07.03 16:30
Оценка:
Здравствуйте, Yacha, Вы писали:
Y>Для того чтобы с this снять const
теперь понятно
но возник новый вопрос:
а почему const_cast не заюзать вместо явного приведение типов?
Re[3]: auto_ptr::release
От: Yacha Россия  
Дата: 17.07.03 16:49
Оценка:
Здравствуйте, promko, Вы писали:

P>Здравствуйте, Yacha, Вы писали:

Y>>Для того чтобы с this снять const
P>теперь понятно
P>но возник новый вопрос:
P>а почему const_cast не заюзать вместо явного приведение типов?
По причине того, что версия STL в VC6 не менялась примерно начиная с VC4.
Microsoft наверно не захотел исправлять STL.
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.