Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

mem_fun и mem_fun_ref - C++

13.07.2013, 00:47. Просмотров 1649. Ответов 24
Метки нет (Все метки)

Здорова! Есть задачка : "Реализуйте и протестируйте четыре функции mem_fun() и mem_fun_ref() (параграф 18.4.4.2)."
Ну там наверно ошиблись не 4 а две функции да пусть две функции будет. Ну и как же мне их реализовать? Чем они хоть отличаются? Это похоже одни и те же функции, токо первая с указателями работает, а вторая с объектами ли хз.
В общем свои нужно написать, наверно свой шаблон нужно написать, а как его делать я даже не представляю. Похоже тяжелая задачка.

Добавлено через 1 минуту
Кто не знает эти функции делают функциональные объект из членов класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2013, 00:47     mem_fun и mem_fun_ref
Посмотрите здесь:

STL: не работает mem_fun_ref - C++
Здравствуйте! Который час корплю над этим кодом и не могу разобраться ptr_fun работает безукоризненно mem_fun_ref ни в какую ...

Вызов неконстантной функции класса в mem_fun_ref - C++
Привет. мне нужно вызвать функцию класса в mem_fun_ref, но ей, как известно требуется чтобы передаваемая функция класса была...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
13.07.2013, 13:36     mem_fun и mem_fun_ref #21
Цитата Сообщение от ForEveR Посмотреть сообщение
gray_fox, В STL как раз их 4. И без хитрых ухищрений два не сделать, ибо
Ну я попробовал, у меня так получилось: http://ideone.com/3wKCpl ... Возможно, дело в gcc конечно.
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
13.07.2013, 15:23     mem_fun и mem_fun_ref #22
http://ideone.com/S15nHF
gray_fox
13.07.2013, 15:36
  #23

Не по теме:

Цитата Сообщение от Olivеr Посмотреть сообщение
http://ideone.com/S15nHF
Зачем перегружать operator () , если константный вариант сделает тоже самое?

Olivеr
13.07.2013, 15:46
  #24

Не по теме:

Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


Зачем перегружать operator () , если константный вариант сделает тоже самое?

а вдруг кто-то напишет так?)
C++
1
const auto str_len = mem_fun_ptr(&std::string::length);
тогда без
C++
1
ReturnType operator () (Type *p) const;
не заведется

я заметил, что у вас аналогичная идея, но const стоит в другом месте
C++
1
mem_fun_t<const T>
C++
1
mem_fun_t<T const, R, Args...>
в данном случае это не имеет значения? Ведь T не может быть указателем потому, что указатель - это не класс:
C++
1
return (objectPtr->*methodPtr_)(std::forward<Args>(args)...)
- выдаст ошибку если T - указатель.
Я прав?

gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
13.07.2013, 15:56     mem_fun и mem_fun_ref #25

Не по теме:

Цитата Сообщение от Olivеr Посмотреть сообщение
а вдруг кто-то напишет так?)
Код C++
1
const auto str_len = mem_fun_ptr(&std::string::length);
тогда без
Код C++
1
ReturnType operator () (Type *p) const;
не заведется
Я имел ввиду как раз оставить константный метод, другой не нужен.



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Olivеr Посмотреть сообщение
я заметил, что у вас аналогичная идея, но const стоит в другом месте
Код C++
1
mem_fun_t<const T>
Код C++
1
mem_fun_t<T const, R, Args...>
в данном случае это не имеет значения?
не имеет - это абсолютно тоже самое.



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Olivеr Посмотреть сообщение
Ведь T не может быть указателем потому, что указатель - это не класс:
Код C++
1
return (objectPtr->*methodPtr_)(std::forward<Args>(args)...)
- выдаст ошибку если T - указатель.
Я прав?
да, будет ошибка при истанциировании.

Yandex
Объявления
13.07.2013, 15:56     mem_fun и mem_fun_ref
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru