1
假設我有下面的函數,它產生的值是通過在代碼中的許多其它功能所需:將函數調用作爲默認參數 - 可以在佔用空間中使用其他參數嗎?
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個超載),但那不是很整齊。我認爲你可以將一個函數作爲默認參數調用真的很酷,我想知道是否有一個簡單的方法來完成我想要做的事情。