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

  • Автор темы Автор темы 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(); по указателю. Как можно передать параметры в функцию?
 
Ты определил func как функцию без параметров и не возвращающую значений. Используя всякие извращения с приведениями типов, ты, конечно, сможешь передавать туда любую фукцию. Только главный вопрос - нафига? Каждую конкретную фукцию все равно надо вызывать с конкретными параметрами. А откуда ты будешь знать, какие передавать параметры? Если ты пытаешься сделать универсальный класс-обертку для вызова произвольной фукции, то смотри на реализацию functor в бусте, локи, или еще где - http://www.rsdn.ru/Forum/?mid=908731
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab