analizer 05.10.2011 10:39 mcabber

плюсач, продолжаю тему пимплов и прочего ускорения компиляции за счёт forward declarations. если функция-фабрика создаёт объект, то должна ли она возвращать умный указатель, или же достаточно простого пойнтера? как велит твоё чуйство прекрасного?

1. 0x2207 05.10.2011 10:40 epsilon

она должна использоваться как smart_ptr( factory.get_my_fuced_object() )

2. analizer0x2207 /1 05.10.2011 10:42 mcabber

оно логично, вопрос-то в том, должна ли она иметь прототип вида fuced_object* factory::get_my_fuced_object() const; или же smart_ptr<fuced_object> factory::get_my_fuced_object() const; ?

3. 0x2207analizer /2 05.10.2011 10:43 epsilon

а вдруг ты вместо smart_ptr захочешь какой-то другой умный указатель? что тогда делать будешь?

4. analizer0x2207 /3 05.10.2011 10:45 mcabber

fukken_smart_ptr( factory.get_my_fuced_object().release() )

5. 0x2207analizer /4 05.10.2011 10:45 epsilon

и потом думать чтобы он еще и поддерживал конвертацию из smart_ptr ?

6. analizer0x2207 /5 05.10.2011 10:48 mcabber

какая конвертация? у всех вумных указателей release() возвращает просто указатель, который более никем не мэнэджится

7. 0x2207analizer /6 05.10.2011 10:50 epsilon

это какая-то тайная конвенция. вместо того, чтобы отдать пользователю то что ему надо, ты начинаешь рассказывать про то что у хороших парней есть функция release. а вдруг ты захочешь свои объекты в контейнер положить. контейнеру тоже release делать каждый раз?

8. analizer0x2207 /7 05.10.2011 10:52 mcabber

я просто сказал что слово «конвертация» излишняя. твою позицию я понял, и в принципе с ней согласен. спасибо.

Do you really want to delete ?