11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
||||||
1 | ||||||
разобраться с ошибкой с3867 (msvs 2012)07.12.2013, 18:56. Показов 2433. Ответов 16
Метки нет (Все метки)
файлы #include
0
|
07.12.2013, 18:56 | |
Ответы с готовыми решениями:
16
Qt 4.8.4 msvs 2012 MSVS 2012 error LNK2019: unresolved external symbol Зависает MSVS 2012 после установки Git плагина MSVS 2012: fstream не открывает файл при дебаге |
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
|
07.12.2013, 23:11 [ТС] | 3 |
я пытался создать ссылку на функцию
работает с void -ами но с методами класса почему-то отказывается
0
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
|
07.12.2013, 23:23 [ТС] | 5 |
а как сделать что-бы на метод класса указывало?
не увидел предыдущий комментарий
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
07.12.2013, 23:28 | 6 | |||||
тип "указатель на метод" отличается от типа "указатель на свободную функцию"
и работают с ними не так, как с указателями на функции. есть еще std::function и в них можно завернуть как указатель на свободную функцию, так и указатель на метод определенного объекта
1
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
||||||
08.12.2013, 00:40 [ТС] | 7 | |||||
все равно ничего не выходит
а что такое std::bind?
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|||||||||||
08.12.2013, 01:26 | 8 | ||||||||||
я не совсем понял задачу в целом. если вам в какую-то функцию или метод нужно передать что-то, что можно выполнить, то есть классический подход (смотрите паттерны проектирования Command, Strategy): То, что нужно выполнить оформляется в абстрактного класса и в потомках уже делается конкретная реализация.
В функцию setProcess передается указатель на Command, а внутри происходит вызов Execute. В новом стандарте появился шаблон std::function, которым можно заменить подобные абстрактные классы с одной функцией. И чтобы это заработало, сигнатура вашего setProcess должна быть такой:
если вкратце - то это функция, которая возвращает объект с перегруженным оператором (). при вызове этого оператора в примере происходит вызов метода у объекта, которые были переданы как аргументы в функцию std::bind
1
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
|
08.12.2013, 21:55 [ТС] | 9 |
всё равно выдаёт ошибку
0
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
||||||
08.12.2013, 22:26 [ТС] | 11 | |||||
0
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
||||||
08.12.2013, 22:31 [ТС] | 12 | |||||
пытался сделать так
IntelliSense: указатель на привязанную функцию можно использовать только для вызова функции
0
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
|
08.12.2013, 22:41 [ТС] | 14 |
если честно то не очень)
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
08.12.2013, 22:42 | 15 | |||||
Если сигнатуру вы написали как я писал до этого, то:
1
|
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
|
||||||||||||||||
08.12.2013, 23:16 [ТС] | 17 | |||||||||||||||
Ошибка 1 error C2664: std::_Func_class<_Ret>::_Set: невозможно преобразовать параметр 1 из "_Myimpl *" в "std::_Func_base<_Rx> *"
ура заработало))) забыл
спасибо всем за помощь))
0
|
08.12.2013, 23:16 | |
08.12.2013, 23:16 | |
Помогаю со студенческими работами здесь
17
необходимо разобраться со всем этим благолепием, которое предоставляет студия MSVS Конвертировать с MsVS 2008 в MsVS 2010 Разобраться с ошибкой Разобраться с ошибкой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |