如何使用 boost::optional 传递可选输入参数
How to use boost::optional to pass optional input parmemters
如何使用带有 boost::optional 参数列表的 API?我还没有找到任何关于输入参数的文档,
This and this不讲如何处理输入参数。请让我知道我缺少什么。
这里是
void myMethod(const boost::optional< std::string >& name,
const boost::optional< std::string >& address,
const boost::optional< boost::string >& description,
const boost::optional< bool >& isCurrent,
const boost::optional< std::string >& ProductName,
const boost::optional< std::string >& Vendor)
鉴于此,我应该如何称呼它? myMethod(,,,,x,y)
没用
对于函数如:
void myMethod( boost::optional<int>, boost::optional<double> );
您可以将 boost::none
作为任何 boost::optional
参数传递以指定“none”:
myMethod( boost::none, 1.0 );
在 C++11 或更高版本中,显式默认构造对象的输入更少。
myMethod( {}, 1.0 );
如果你想完全省略参数的任何提及,C++ 只需要在 指定参数之后使用默认参数。
void myMethod( boost::optional<int> = boost::none_t,
boost::optional<double> = boost::none_t );
myMethod( 42 ); // (The second parameter will be boost::none_t
您需要使用不同的参数顺序重载您的函数,以允许省略任何参数。
void myMethod( boost::optional<int> = boost::none,
boost::optional<double> = boost::none );
// Alternate parameter ordering
void myMethod( boost::optional<double> d,
boost::optional<int> i = boost::none )
{
myMethod( i, d );
}
myMethod( 1.0 ); // (The "int" parameter will be boost::none
如何使用带有 boost::optional 参数列表的 API?我还没有找到任何关于输入参数的文档,
This and this不讲如何处理输入参数。请让我知道我缺少什么。
这里是
void myMethod(const boost::optional< std::string >& name,
const boost::optional< std::string >& address,
const boost::optional< boost::string >& description,
const boost::optional< bool >& isCurrent,
const boost::optional< std::string >& ProductName,
const boost::optional< std::string >& Vendor)
鉴于此,我应该如何称呼它? myMethod(,,,,x,y)
没用
对于函数如:
void myMethod( boost::optional<int>, boost::optional<double> );
您可以将 boost::none
作为任何 boost::optional
参数传递以指定“none”:
myMethod( boost::none, 1.0 );
在 C++11 或更高版本中,显式默认构造对象的输入更少。
myMethod( {}, 1.0 );
如果你想完全省略参数的任何提及,C++ 只需要在 指定参数之后使用默认参数。
void myMethod( boost::optional<int> = boost::none_t,
boost::optional<double> = boost::none_t );
myMethod( 42 ); // (The second parameter will be boost::none_t
您需要使用不同的参数顺序重载您的函数,以允许省略任何参数。
void myMethod( boost::optional<int> = boost::none,
boost::optional<double> = boost::none );
// Alternate parameter ordering
void myMethod( boost::optional<double> d,
boost::optional<int> i = boost::none )
{
myMethod( i, d );
}
myMethod( 1.0 ); // (The "int" parameter will be boost::none