Я хотел бы написать своего рода функцию-оболочку для своего класса... И я действительно не знаю, как это сделать!
Видите ли, я хочу, скажем, run()
функцию, чтобы принимать функцию в качестве аргумента, это самая простая часть. Использование будет примерно таким
void f() { }
void run(int (*func)) {
//whatever code
func();
//whatever code
}
run(f);
Это должно просто запустить функцию f()
, верно?
Но что, если у f()
есть обязательные аргументы? Скажем, он был объявлен как f(int i, int j)
, я бы переписал функцию run()
, чтобы отдельно принимать эти int
и передавать их функции f()
.
Но я хотел бы иметь возможность передавать любую функцию в run()
, независимо от того, сколько аргументов или какого они типа. Это означает, что, в конце концов, я хотел бы получить использование, подобное тому, что я ожидал бы от гипотетического
void f() {int i, int j}
void v() {char* a, int size, int position}
void run(int (*func)) {
//whatever code
func();
//whatever code
}
run(f(1, 2));
run(v(array, 1, 2));
сделать. Я знаю, что это выглядит глупо, но я думаю, что доношу свою точку зрения.
Как бы я это сделал?
Пожалуйста, помните, что это arduino-c++, так что в нем может не хватать чего-то, но я верю, что есть библиотеки, которые могли бы компенсировать это...