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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Ramozarti, 15 июн 2008.

  1. Ramozarti

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

    grigsoft Well-Known Member

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

Поделиться этой страницей