Pull to refresh

Comments 8

А чем std::function не угодил? Вместе с std::bind они творят чудеса.

typedef std::function<void (char *)> Callback;

Callback MyCallback = [](char *s) {
    puts(s);
};

MyCallback("123");


В рамках оффтопа: негоже printf и puts в плюсовом коде писать, да и char* там особо не место.
Это совсем уж частный случай :) Но да, смысл в этом. Или можно даже
std::bind(&MyClass::method, this, _1)
>> Кусок «->возвращаемый тип» может отсутствовать. Тогда подразумевается «->void»
там не void подразумевается, а auto и будет выведение типа для результата, как если бы мы объявили обычную функцию с типом auto, только в лямбдах это по умолчанию подразумевается.
    class FuncClass{
    public:
        // Переопределяемая функция
        virtual void Call(char*)=0;
    };

    // Указатель на сохранённый класс
    FuncClass *function;

public:



    Callback(){
        function=0;
    }

Раз уж это C++11, то и вместо 0 или NULL стоит использовать nullptr
А в коде вы специально не привели ни одного примера с захватываемыми переменными? Везде в примерах список захвата пуст — [].
Sign up to leave a comment.

Articles