Я пытался реализовать функцию обратного вызова в C ++.Внутри класса у меня есть структура, несколько методов и метод, который создает экземпляр структуры с одним из других методов в качестве аргумента.
Структура имеет много других переменных, но здесь изображена иллюстрация:
class MYCLASS
{
public:
MYCLASS();
struct TEST{
std::function<int(int)> foo;
};
int plus(int x){
return x + 1;
}
int minus(int x){
return x - 1;
}
void sim(){
TEST T; // make an instance of TEST
T.foo = plus(5); // assign TEST.foo a function (plus or minus)
T.foo(); // call the method we assigned
}
};
В методе sim
я хочу создать экземпляр test
и дать ему либоplus
или minus
, в зависимости от некоторого критерия.Обе строки, где я пытаюсь дать экземплярную функцию T
a plus
, и впоследствии вызываем ее, неверны.