Я использую указатели на функции typedef'd:
typedef int (* ptr2Func) ();
И функция, которая при присвоении числа будет выбирать указатель функции для функции, которая уже объявлена.
ptr2Func getPtr2Func (int function);
Так что, если вы используете getPtr2Func (1); вы получите указатель на первую функцию.
Однако сейчас я хочу сделать совершенно противоположную вещь: передать ссылку на указатель функции в функцию, которая, в свою очередь, вернет номер функции.
Т.е. у меня есть 4 тестовые функции, которые ничего не делают, кроме отображения сообщения.
if getPtr2Func (1); вызывается указатель на функцию function1.
Могу ли я сделать это:
int getFuncNum (ptr2Func * & func);
И, таким образом, получить номер функции, на которую указывает указатель этой функции? Предполагая, что я знаю все функции, которые отображаются на число, указанное в getPtr2Func, я мог бы использовать регистр переключения или несколько if-else, чтобы найти, какой адрес этих функций соответствует указателю функции, переданному в качестве аргумента, нет?
Также, каков будет правильный синтаксис для этого?
Заранее спасибо! :)
Edit:
Не важно, я нашел ответ ...
Просто передать его как есть и сравнить адреса ...
typedef int(*ptr2Func)();
int findFunc(ptr2Func func){ if (func == &test1){ return 1; } }
Работает с небольшим тестированием, которое я сделал ... (test1 () - это функция ...) Хотя я не знаю, есть ли более эффективный или безопасный способ сделать это ...