Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
tapochka
40 / 40 / 8
Регистрация: 25.04.2014
Сообщений: 499
#1

Забиндить функцию и параметром-ссылкой не используя С++11 - C++

01.07.2015, 02:48. Просмотров 329. Ответов 1
Метки нет (Все метки)

Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
здравствуйте, есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct CPack {
void Save(TiXmlElement& element) {}
};
 
int main()
{
TiXmlElement node("TestParams");
std::vector<CPack> vec(10);
std::vector<CPack>::iterator begin = vec.begin();
std::vector<CPack>::iterator end = vec.end();
std::for_each(begin, end, std::bind2nd(std::mem_fun_ref(&CPack::Save), node));
 
return 0;
}
вылетает ошибка, что не можем преобразовать const TiXmlElement в TiXmlElement&...
Реально ли без c++11 сделать for_each корректно работающим?

и второй вопрос: если кто знает, набросайте пожалуйста примерную реализацию std::ref без c++11 или хотя бы совет как это сделать

Добавлено через 2 часа 17 минут
сам отвечаю на свой вопрос, может кому-нибудь будет интересно(хотя вряд ли):
нашел примерно такую реализацию(чуть-чуть изменил, чтобы было более читабельно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<typename T>
class ObjectToReference {
public:
    ObjectToReference(T& arg): data(&arg)
    {}
 
    ObjectToReference(const ObjectToReference<T>& arg): data(arg.data)
    {}
 
    operator T&() const
    { 
        return *data; 
    }
 
private:
    T* data;
};
теперь все работает:
C++
1
std::for_each(begin, end, std::bind2nd(std::mem_fun_ref(&CPack::Save), ObjectToReference<TiXmlElement>(node)));
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2015, 02:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Забиндить функцию и параметром-ссылкой не используя С++11 (C++):

Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders - C++
Значит привет всем. Суть в кратце: хочу забиндить функцию с параметрами (кол-во произвольно), чтобы она хранилась в классе, и чтобы я мог...

Забиндить второй аргумент функции, используя std::bind2nd - C++
Как забиндить свою функцию с двумя аргументами в функцию с одним аргументом? Вот пример в котором нужно сделать для b: #include...

Создать функцию с параметром - C++
Вот код. Там a,b,x,N, InFile глобальные переменные. мне нужно разбить прогу на модули. для этого глобальные нужно запихнуть в функцию с...

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

Можно ли сделать функцию с параметром - C++
Допустим у меня есть функция, проверяющая четное число или нет. bool chet(int x) { if(x%2==0) { return true; } ...

Вычислить значение суммы ряда, используя операторы цикла с предусловием, постусловием и параметром - C++
Задание: Вычислить значение суммы ряда, используя операторы цикла с предусловием, постусловием и параметром (по выбору пользователя)....

1
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
01.07.2015, 02:58 #2
Для ознакомления: http://www.boost.org/doc/libs/1_56_0...e_wrapper.html
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 02:58
Привет! Вот еще темы с ответами:

Используя оператор цикла с параметром, протабулировать функцию - Turbo Pascal
ооооооочень нужно...заранее спасибо! 3. Используя оператор цикла с параметром, протабулировать функцию с шагом dx = 0.2. Найти и...

Используя оператор цикла с параметром, протабулировать функцию с шагом dx=0,1 - Turbo Pascal
Используя оператор цикла с параметром, протабулировать функцию с шагом dx=0,1. Найти и напечатать также минимальное, максимальное и среднее...

Вызов функции с параметром ссылкой - PHP
Доброго всем дня! Столкнулся с проблемой, что если вызвать функция через адресною строку с параметром написанным кирилицей, то возвращает...

Как можно запустить прогу, не используя функцию Shell, а используя API функцию? - Visual Basic
Привет Всем! Подскажите, как можно запустить прогу, не используя функцию Shell, а используя API функцию. Наверное PostMessage или...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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