Невозможно определить функцию std :: и инициализировать ее функциейC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Невозможно определить функцию std :: и инициализировать ее функцией

Сообщение Anonymous »

Я пытаюсь передать функцию конструктору и был указан на функцию std :: < /p>
У меня есть Factory.h: < /p>
Public:
Factory(std::function myCallbackFunction :
m_callbackFunction{ myCallbackFunction }

Private:
std::function myCallbackFunction{};
< /code>
, а также зависимость .cpp: < /p>
const auto myCallbackFunc {
getCallbackFunc();
}

const auto pMyFactory {
std::make_shared(
myCallbackFunc
)
};
< /code>
и вот функция 'getCallbackfunc ()', которая находится в зависимости от зависимости .cpp: < /p>
std::function getCallbackFunc()
{
// The following line gives the error:
// No suitable user-defined conversion from "std::_Binder" to "std::function(const int)" exists
std::function callbackFunc = std::bind(&IController::setState, std::placeholders::_1);
return callbackFunc;
}
< / code>
Вот 'setState' in icontroller.h: < / p>
bool setState(const int state) {
// ...
}
< /code>
Что неправильно в строке, которая дает ошибку? Я предполагаю, что неверно указываю на функцию, но я смотрел в Интернете без удачи. < /P>
Я хочу переменная члена для этой функции, которую затем можно вызвать позже.

Подробнее здесь: https://stackoverflow.com/questions/794 ... a-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»