在C ++中处理可选参数/默认值的最佳方法

这是什么

我想知道是否有一种方法可以通过一个函数来完成以下操作:

    template <typename T>
void _class_<T>::func (T chgx = x, T chg y = y, T chgz = z)
{
     x = chgx;
     y = chgy;
     z = chgz;
}

我想做的是将默认值设置为要更改的值,这样,如果我省略一些参数,这些值就不会更改。上面的代码不起作用,我想我理解为什么(该函数实际上无法访问这些值,因此会引发错误)。

我想知道的是,是否有一种方法可以像上面描述的那样使用一种功能来完成所有这些工作。我唯一的选择是用多个定义重载函数以处理不同数量的参数吗?

萨胡

您可以通过具有一组重载函数来完成所需的操作。

// First overload. Needs all arguments.
template <typename T>
void _class_<T>::func (T chgx, T chgy, T chgz)
{
     x = chgx;
     y = chgy;
     z = chgz;
}

// Second overload. Needs two arguments.
template <typename T>
void _class_<T>::func (T chgx, T chgy)
{
     x = chgx;
     y = chgy;
}

// Third overload. Needs one argument.
template <typename T>
void _class_<T>::func (T chgx)
{
     x = chgx;
}

// You can have a fourth overload that takes no arguments.
// However, it's totally useless.
template <typename T>
void _class_<T>::func ()
{
   // Nothing needs to be changed.
}

重复代码较少的东西(感谢@BenVoigt的建议):

// Second overload. Needs two arguments.
template <typename T>
void _class_<T>::func (T chgx, T chgy)
{
   func(chgx, chgy, z);
}

// Third overload. Needs one argument.
template <typename T>
void _class_<T>::func (T chgx)
{
   func(chgx, y);
}

// You can have a fourth overload that takes no arguments.
// However, it's totally useless.
template <typename T>
void _class_<T>::func ()
{
   func(x);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++构造函数中参数的默认值

来自分类Dev

C ++构造函数中参数的默认值

来自分类Dev

在C#中设置默认值

来自分类Dev

struct c中的默认值[重复]

来自分类Dev

C ++中类成员的默认值

来自分类Dev

在C#中设置默认值

来自分类Dev

turbo c 中的默认值

来自分类Dev

C ++默认值

来自分类Dev

如何在C#中为委托类型的参数提供默认值?

来自分类Dev

如何确定函数参数是自动设置为默认值还是在C ++中显式设置?

来自分类Dev

可选参数的默认值

来自分类Dev

在 C++ struct 中,构造函数中的默认值和默认参数有什么区别?

来自分类Dev

C++ std::list 参数与默认值

来自分类Dev

可选参数的可选默认值

来自分类Dev

C / C ++中的静态指针默认值

来自分类Dev

Swift函数中可选通用参数的默认值

来自分类Dev

C#传递带有可选默认值的整数变量

来自分类Dev

C ++ setGender方法恢复为默认值

来自分类Dev

在C#方法重载中使用默认值

来自分类Dev

如何在C#中在运行时将默认值分配给函数参数

来自分类Dev

C#中自动实现的属性默认值

来自分类Dev

使用cin的C ++中变量的默认值>>

来自分类Dev

C ++中隐式Default构造函数的默认值

来自分类Dev

c中char的默认值是什么

来自分类Dev

ComboBox C#中的默认值DataSource

来自分类Dev

为C#中可变的属性设置默认值

来自分类Dev

如何在C ++中枚举结构的默认值

来自分类Dev

C ++中动态布尔数组的默认值

来自分类Dev

c中char的默认值是多少