Re[2]: Как хранить внешний объект в функторе?
От: sheglov.nik  
Дата: 18.10.10 12:12
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, Аноним, Вы писали:


А>>Как вариант можно хранить в my_comparator ссылку на bigObj:


А>>
А>>class my_comparator {
А>>public:
А>>    my_comparator( const Big& _bigObj ) : bigObj (_bigObj)
А>>    { 
А>>    }
А>>private:
А>>    Big& bigObj;
А>>


А>>Но что-то мне подсказывает, что это плохой вариант...


B>А что именно подсказывает? Мне вот например такой подход не кажется чем-то неправильным


Ну меня смущают такие сценарии
1.

my_comparator cmp1 (bigObj1);
my_comparator cmp2 (bigObj2);
cmp1 = cmp2; // Побочный эффект bigObj1 = bigObj2 ? Это нормально?

А если хранить константную ссылку, то я не смогу сделать оператор присваивания. Или STL не требует, чтобы функторы можно было присваивать?

2.
Big *pBigObj = new Big;
my_comparator cmp (*pBigObj);
delete pBigObj;
std::sort(v.begin(), v.end(), cmp );

Конечно не бог весть какой сценарий, но все же реализуемый...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.