Я возился с созданием оболочки с использованием шаблонов, позволяющей передавать методы в качестве аргументов в другие методы без необходимости загружать свой вызывающий код лямбда-функциями на основе этого ответа, но столкнулся с проблемой.
А именно, решение компилируется, когда методы вычисления и ответа не являются частью класса MyClass. Однако как только я использую методы, являющиеся частью MyClass, я получаю следующие ошибки.
Ошибка Intellisense: не существует подходящего конструктора для преобразования от "void (std::function callback)" до "std::function"
Ошибка компилятора: 'MyClass::Computing': нестандартный suyntax; используйте '&' для создания указателя на члена
Держу пари, что мне здесь не хватает чего-то до глупости простого.
MyClass. ч
class MyClass{
MyClass();
void A(std::function func);
void B(int i);
}
MyClass.cpp
MyClass::MyClass(){
//Erroring Line
std::function question = TheWrapper(Computing);
question(Answering);
}
void MyClass::Computing(std::function callback){
//Thinking deep thoughts
//Answer
callback(42);
}
void MyClass::Answering(int i){
//Shrug
}
Wrapper.cpp
template
void TheSystem(F Func, U callback) {
//Submit request in triplicate
//Burry in a peat bog
//Dig up
//Start computation of the meaning of life, the universe, and everything
Func(callback);
}
std::function TheWrapper(const std::function& Func) {
return [Func](std::function callback) { TheSystem(Func, callback); };
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... ut-lambdas
Передача методов C++ в качестве параметров без лямбда-выражений ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение