2016-01-19 164 views
3

我有功能與此簽名(我不能編輯):忽略參考函數參數

void foo(int a,int b, int& c); 

我想打電話,但我不關心越來越℃。目前,我這樣做:

int temp; 
foo(5,4,temp); 
//temp never used again 

我的解決辦法似乎是愚蠢的。忽略這個論點的標準方法是什麼?

+4

只用兩個第一個參數編寫一個重載的包裝函數? –

回答

6

沒有。

如果您關注的主要是有溫度的情況下,一個包裝函數......像你污染當前堆棧之一:

void foo_wrapper(int a, int b) 
{ 
    int temp; foo(a, b, temp); 
} 

應該足夠了。

3

我會寫一個重載,將輸出參數轉換爲正常的返回值。我真的不喜歡輸出參數,認爲應該避免。

int foo(int a, int b) { 
    int tmp = 0; 
    foo(a,b, tmp); 
    return tmp; 
} 

在你的程序中,你只是這個重載並忽略返回值或使用它。

-2

相反的參考,你可以把它作爲在調用的地方,你既可以指向

void foo(int a,int b, int *c = NULL);

它作爲

foo(5, 6);

,或者如果你想通過第三個參數那麼你可以把它作爲

int n = 3; foo (1, 2, &n);

+3

您沒有閱讀說明簽名無法更改的部分。 – molbdnilo

+0

該功能無法編輯... – cwfighter