【发布时间】:2017-10-03 18:21:23
【问题描述】:
接下来的代码将使用error: call of overloaded 'f(int)' is ambiguous进行编译
当我用一个参数调用f 时,我可以不使用va_list 来解决这个问题吗?
这是一个 printf 类型的函数。我只是想知道是否可以在不引入新名称的情况下单独处理简单案例来提高效率。
有什么解决办法吗?
#include <cstdarg>
void f(int n, ...) {
va_list args;
va_start(args, n);
//Do something
va_end(args);
}
void f(int n) {
//Do something without va_list
}
int main() {
f(42);
return 0;
}
【问题讨论】:
-
为什么你觉得你需要用省略号开头?它是 C++ 中通常使用的最后一种工具。
-
这是一个 printf 类型的函数。我只是想知道是否可以在不引入新名称的情况下单独处理简单案例来提高效率。
-
如果你在 c++ 中做
printf风格的事情,也许考虑 variadic templates