gpt4 book ai didi

c++ - 如何使用 boost::optional 传递可选输入参数

转载 作者:太空狗 更新时间:2023-10-29 23:35:48 27 4
gpt4 key购买 nike

如何使用带有 boost::optional 参数列表的 API?我还没有找到任何关于输入参数的文档,

Thisthis不谈如何处理输入参数。请让我知道我缺少什么。

在这里

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 参数传递以指定“无”:

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

关于c++ - 如何使用 boost::optional 传递可选输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com