假设我有以下函数,它产生的值是代码中许多其他函数所需要的:
float mean(foo param1, bar param2);
我的其他功能如下所示:
float foobar(foo param1, bar param2, float meanValue);
我想要做的是以下内容:
float foobar(foo param1, bar param2, float meanValue = mean(param1, param2));
虽然将函数作为默认参数传入是合法的,但编译器(VS2008)抱怨param1和param2没有声明 - 因为参数从meanValue开始从右到左推入堆栈。当然,我不能颠倒参数的顺序,因为在这种情况下,我将无法为第一个参数指定默认值。
我可以传入一些像 -10000 这样的值,让平均值告诉自己调用 mean() 函数;或者我可以重载每个函数(并且有 10+ 个要重载),但这不是很整洁。我认为您可以将函数作为默认参数调用真的很酷,我想知道是否有一种巧妙的方法来完成我想要做的事情。