1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. Ramozarti

    Ramozarti Гость

    Репутация:
    0
    Есть код:
    [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

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

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