
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.04.2004, 14:55
|
|||
|---|---|---|---|
куда совать bind2nd??? |
|||
|
#18+
Я наверняка, что-то делаю не так, может кто подскажет как надо?? //функтор template<class R, class CP> class premium_fun_t2 : public binary_function<CP*, unsigned short, R> { R(CP::*pmf)(); public: string sResult; explicit premium_fun_t2(R(CP::*p)()):pmf(p){} R operator() (CP* p, unsigned short premium) { ...... return 0; } }; //объект template <class R, class CP> premium_fun_t2<R, CP> premium_fun2(R(CP::*f)(), unsigned short premium) { return bind2nd(premium_fun_t2<R, CP>(f), premium); } //тогда в программе for_each(vector_person.begin(), iter_last, premium_fun2((&CPerson::AddPremium), size_premium)); //ошибка //а если: template <class R, class CP> premium_fun_t2<R, CP> premium_fun2(R(CP::*f)()) { return premium_fun_t2<R, CP>(f); } //в программе: for_each(vector_person.begin(), iter_last, bind2nd(premium_fun_t2<unsigned short, CPerson>(&CPerson::AddPremium), premium); //тоже ошибка а куда этот bind2nd еще совать я уже не знаю ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2004, 09:54
|
|||
|---|---|---|---|
куда совать bind2nd??? |
|||
|
#18+
Попытка вызвать косвенно explicit-конструктор. (Сам не понял, что сказал ) Короче, explicit premium_fun_t2 может быть вызван только непосредственно, то есть попытка создать объект, как параметр функции не пройдёт. Сначала надо создать, потом позвать. Или убрать explicit (кто и зачем его придумал?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.04.2004, 17:10
|
|||
|---|---|---|---|
куда совать bind2nd??? |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.04.2004, 00:30
|
|||
|---|---|---|---|
куда совать bind2nd??? |
|||
|
#18+
авторИли убрать explicit (кто и зачем его придумал?) Понимаю что скорее всего это стёб, но на всякий случай: кто придумал - дак наверно БС и придумал. Зачем? Допустим есть класс string с конструктором типа string(int n){/*....*/}, который создаёт пустую строку длинной n символов. Что будет если к. нибудь наивняк напишет: string s = 'a'; будет вот что: string s = string((int)'a'); вопрос в том, то ли это что он/она имел/а в виду? Вряд ли. А если объявить explicit string(int); то компайлер отловит врага ещё на дальних подступах к столице нашей Родины. Вот примерно так объясняет это БС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2035075]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 315ms |

| 0 / 0 |
