Arn*_*rah 2 c++ lambda class function c++11
我正在设计一个RGBA类,其中需要将四个参数传递给类的构造函数,以实例化该类.构造函数如下所示:
RGBA(int red = 0, int green = 0, int blue = 0, int alpha = 255)
{
auto valid_color = [](int param) {return (param >= 0 && param <= 255) ? param : 0; };
m_red = valid_color(red);
m_green = valid_color(green);
m_blue = valid_color(blue);
m_alpha = valid_color(alpha);
}
Run Code Online (Sandbox Code Playgroud)
如上所示,我为每个参数使用了lambda来验证传递的参数.这让我想知道,这样一个lambda对函数有什么好处,比如这个(private在接口中声明):
int valid_color(int param)
{
return (param >= 0 && param <= 255) ? param : 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我的选择是这样的:
哪个选项看起来最好,为什么?
好吧,如果你使用lambda,你不能这样做:
RGBA(int red = 0, int green = 0, int blue = 0, int alpha = 255)
: m_red{valid_color(red)}
, m_green{valid_color(green)}
, m_blue{valid_color(blue)}
, m_alpha{valid_color(alpha)}
{}
Run Code Online (Sandbox Code Playgroud)
这使用构造函数初始化列表来初始化成员,而不是在构造函数体中执行它.
此外,您的成员函数应该是静态成员函数.或者是内部全局/命名空间范围的函数.它不使用this.