firemail

标题: C++11新特性之std stl [打印本页]

作者: Qter    时间: 2020-3-2 11:42
标题: C++11新特性之std stl
本帖最后由 Qter 于 2020-3-6 11:16 编辑
  1. std::forward<Parent>(parent),
  2. std::move

  3. std::make_unique<ContactsBoxController>()


  4. Ui::show(Box<PeerListBox>(std::make_unique<ContactsBoxController>(), [](not_null<PeerListBox*> box) {
  5.                                 box->addButton(langFactory(lng_close), [box] { box->closeBox(); });
  6.                                 box->addLeftButton(langFactory(lng_profile_add_contact), [] { App::wnd()->onShowAddContact(); });
  7.                         }));



  8. template <typename BoxType, typename ...Args>
  9. inline object_ptr<BoxType> Box(Args&&... args) {
  10.         auto parent = static_cast<QWidget*>(nullptr);
  11.         return object_ptr<BoxType>(parent, std::forward<Args>(args)...);
  12. }


  13. Fn<QString()> textFactory,
  14. std::move(textFactory),
  15. using Fn = std::function<Signature>;
  16. PeerListBox::PeerListBox(        QWidget*,        std::unique_ptr<PeerListController> controller,        Fn<void(not_null<PeerListBox*>)> init): _controller(std::move(controller)), _init(std::move(init)) {        Expects(_controller != nullptr);}
  17.         Fn<void(PeerListBox*)> _init;




复制代码

作者: Qter    时间: 2020-4-8 11:24
class A {void Test();
   void resultHandler(int result);

}


void A::Test()
        {
                auto addBox = Ui::show(Box<GroupBox>(), LayerOption::KeepOther);
                addBox->setResultHandler(std::bind(&ContactBox::resultHandler, this, -1));
        }



class GroupBox {
  void setResultHandler(Fn<void(int)> handler);
Fn<void(int)> _resultHandler{ nullptr };
}

        void GroupBox::setResultHandler(Fn<void(int)> handler)
        {
                _resultHandler = handler;
        }


注意事项:



链接:https://www.jianshu.com/p/621fc81a1dc






欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3