duilib框架分析:几个回调(C++11)

里面涉及的几个回调还比较有用处,记录一下用做练手
主要还是一个原理:函数和方法基本是相似的,区别仅仅在于方法可能带有一个状态(对象拥有的成员变量),在C++11中使用std::funcation将调用统一

typedef std::function<void(const std::string&)> Callback;
class A {
public:
    virtual void Create(const std::string &str) { std::cout << "default create" << std::endl; }
};
class B :public A {
public:
    //虚方法重写
    virtual void Create(const std::string &str) { std::cout << str << std::endl; }
};

void Builder(const std::string &name, Callback cb = Callback()) {
    //...先根据其它条件创建
    //...如果都不满足且有回调的情况,执行回调创建

    if (cb) {
        cb(name);
    }

    //或者:cb也可以和NULL进行比较
    //if (cb != NULL) {
    //    cb(name);
    //}
}
int main()
{
    auto b = new B();
    auto cb = std::bind(&A::Create, b, std::placeholders::_1);
    Builder("box",cb);//"box"
    Builder("label",cb);//"label"

    Builder("vbox", Callback());
}

 

上一篇:duilib学习------网易云信图片中间加文字


下一篇:《DuiLib学习》--消息机制传递