-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Можно ли как-то без временных переменных?

Среда, 22 Июля 2020 г. 05:53 + в цитатник
JoeUser: Всем привет!

Накидал небольшой примерчик, и по нему есть вопрос:

    #include
    #include
    // ------------------------------------------------------------------------------
    using CallbackType = std::function;
    // ------------------------------------------------------------------------------
    class Karbofos {
    CallbackType *Begin = nullptr;
    CallbackType *End = nullptr;
    public:
    const std::string Name = "Карбофос";
    void SetCallback(CallbackType *B, CallbackType *E) {
    Begin = B;
    End = E;
    }
    void Run() {
    try {
    if (Begin) (*Begin)(this);
    std::cout << "- Не отдам, слон - мой!\n";
    if (End) (*End)(this);
    } catch(const std::bad_function_call& E) {
    std::cout << "Хреновый вызов: " << E.what() << '\n';
    } catch(...) {
    std::cout << "Случилось страшное!\n";
    }
    }
    };
    // ------------------------------------------------------------------------------
    void Shef(void* i) {
    std::cout << "- Стой, живодер " << ((Karbofos*)(i))->Name << "!\n";
    }
    // ------------------------------------------------------------------------------
    void Kollega(void* i) {
    std::cout << "- " << ((Karbofos*)(i))->Name << ", ты немец и контрабандист!\n";
    }
    // ------------------------------------------------------------------------------
    int main() {
    Karbofos Object;
    CallbackType S = Shef;
    CallbackType K = Kollega;
    Object.SetCallback(&S,&K);
    Object.Run();
    return 0;
    }

Как мне в SetCallback передать сразу указатели на функции, без использования временных переменных?

Добавлено
Блин, переработался я new CallbackType(), решает ... осталось как-то возможную утечку памяти подпилить хитрыми указателями.

https://forum.sources.ru/index.php?showtopic=419210&view=findpost&p=3834849

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку