在他们的网页上,Nana GUI人员给出了这个例子:
#include<nana/gui.hpp>
int main()
{
using namespace nana;
form fm;
drawing{fm}.draw([](paint::graphics& graph){
graph.string({10, 10}, L"Hello, world!", colors::red);
});
fm.events().click(API::exit);
fm.show();
exec();
}
Run Code Online (Sandbox Code Playgroud)
在开始的行中使用的C++特性是什么:drawing {fm} .draw ...
我从来没有见过这样的用法.
它被称为统一初始化,并在C++ 11中添加.有关详细信息,请参阅Bjarne的页面.
在您的特定示例中,drawing使用fm作为构造函数的实际参数构造一个未命名的实例drawing.draw然后在此drawing实例上调用该方法.这也可以使用普通的parens编写:
drawing(fm).draw([](paint::graphics& graph){
graph.string({10, 10}, L"Hello, world!", colors::red);
});
Run Code Online (Sandbox Code Playgroud)
有一些细微的差别:即使用{}将有利于构造函数initializer_list(如果存在这样的构造函数); 使用{}避免最烦恼的解析 ; 并使用{}避免隐式有损缩小的参数.有关详细信息,请参阅此GotW.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |