在c中通过参考传递可选参数

我在C中有可选功能参数的问题

我想要做的是用参数传递的可选参数编​​写函数,以便我可以用两种方式(1)和(2)使用它,但是(2)我不太在乎什么是mFobob的值。

我试过这样一个代码:

void foo(double &bar, double &foobar = NULL)
{
   bar = 100;
   foobar = 150;
}

int main()
{
  double mBar(0),mFoobar(0);

  foo(mBar,mFoobar);              // (1)
  cout << mBar << mFoobar;

  mBar = 0;
  mFoobar = 0;

  foo(mBar);                     // (2)
  cout << mBar << mFoobar;

  return 0;
}

但它崩溃了

void foo(double &bar, double &foobar = NULL)

带消息:

error: default argument for 'double& foobar' has type 'int'

是否可以解决它没有功能重载?

(可变)引用的默认参数必须是一个l值。最好的我可以想到,没有超载,是

static double _dummy_foobar;
void foo(double &bar, double &foobar = _dummy_foobar)
http://stackoverflow.com/questions/2816293/passing-optional-parameter-by-reference-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在c中通过参考传递可选参数