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

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

Ramozarti

#1
Есть код:
[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(); по указателю. Как можно передать параметры в функцию?
 

grigsoft

Well-known member
15.11.2005
735
0
#2
Ты определил func как функцию без параметров и не возвращающую значений. Используя всякие извращения с приведениями типов, ты, конечно, сможешь передавать туда любую фукцию. Только главный вопрос - нафига? Каждую конкретную фукцию все равно надо вызывать с конкретными параметрами. А откуда ты будешь знать, какие передавать параметры? Если ты пытаешься сделать универсальный класс-обертку для вызова произвольной фукции, то смотри на реализацию functor в бусте, локи, или еще где - http://www.rsdn.ru/Forum/?mid=908731