• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как использовать указатель на функцию с любыми аргументами и возрващае

  • Автор темы Ramozarti
  • Дата начала
R

Ramozarti

Есть код:
[codebox]
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>

//---------------------------------------------------------------------------

int SomeFunc (int a, int :) {
cout << a << " and " << b;
}
class TestClass {
private:
void (*func) (void) ;
public:
TestClass ( void (*f) (void)) {
func = f;
}

SomeFunc() {
func();
}
};
#pragma argsused
int main(int argc, char* argv[])
{
TestClass t ( (void (*)(void)) SomeFunc);
t.SomeFunc();

char a;
cin >> a;
return 0;
}
//---------------------------------------------------------------------------[/codebox]

Правильно ли я определил func как указатель на функцию с любыми аргументами и любым возвращаемым значением? В SomeFunc() происходит вызов функции func(); по указателю. Как можно передать параметры в функцию?
 
G

grigsoft

Ты определил func как функцию без параметров и не возвращающую значений. Используя всякие извращения с приведениями типов, ты, конечно, сможешь передавать туда любую фукцию. Только главный вопрос - нафига? Каждую конкретную фукцию все равно надо вызывать с конкретными параметрами. А откуда ты будешь знать, какие передавать параметры? Если ты пытаешься сделать универсальный класс-обертку для вызова произвольной фукции, то смотри на реализацию functor в бусте, локи, или еще где -
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!