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

mem_fun и mem_fun_ref - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
13.07.2013, 00:47     mem_fun и mem_fun_ref #1
Здорова! Есть задачка : "Реализуйте и протестируйте четыре функции 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
Посмотрите здесь:

C++ вызов неконстантной функции класса в mem_fun_ref
STL: не работает mem_fun_ref C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
13.07.2013, 13:36     mem_fun и mem_fun_ref #21
Цитата Сообщение от ForEveR Посмотреть сообщение
gray_fox, В STL как раз их 4. И без хитрых ухищрений два не сделать, ибо
Ну я попробовал, у меня так получилось: http://ideone.com/3wKCpl ... Возможно, дело в gcc конечно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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
Ответ Создать тему
Опции темы

Текущее время: 09:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru