2016-01-19 284 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