Max*_*rai 6 c++ arguments function
我有一个功能A(...)和B(...).现在,我要打电话B内A,任何方法来传递...从A进入B?伪代码:
void A(...)
{
// Some operators
B(...); // Instead of ... I need to pass A's args
}
Run Code Online (Sandbox Code Playgroud)
ps我知道这可以使用宏完成,但功能如何.
你无法转发va_args.你只能转发va_list.
void vB(int first, va_list ap)
{
// do stuff with ap.
}
void B(int first, ...)
{
va_list ap;
va_start(ap, first);
vB(first, ap);
va_end(ap);
}
void A(int something_else, int first, ...)
{
va_list ap;
va_start(ap, first);
vB(first, ap); // <-- call vB instead of B.
va_end(ap);
}
Run Code Online (Sandbox Code Playgroud)
(这也是vprintf存在功能的原因.)
如果您使用的是C++ 11,则可以使用具有完美转发的可变参数模板执行此操作:
template <typename... T>
void A(T&&... args)
{
B(std::forward<T>(args)...);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |