如果我有一个va_list,我知道如何提取它的所有元素:
void printInts(int n,...)
{
va_list va;
va_start(va, n);
for(unsigned int i=0; i<n; i++)
{
int arg=va_arg(va, int);
printf("%d",arg);
}
va_end(va);
}
Run Code Online (Sandbox Code Playgroud)
因此,当我调用printInts(3,1,2,3)时,va_list将填充所有参数.
但是如何在不使用va_start的情况下手动填充va_list?我的意思是我想要这样的东西:
va_list va;
push_arg(va, int, 5); // And so on until I fill all parameters
...
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为有一个函数接受va_list作为参数,我不知道如何填充其所有参数的va_list.
我有一个功能
void foo(int cnt, va_list ap);
Run Code Online (Sandbox Code Playgroud)
我需要使用它,但要求非常严格,数量各va_list不相同,并且在运行期间会发生变化.我想做的是:
创建一个va_list(期望的char*)表单
QList<Contact*>
Run Code Online (Sandbox Code Playgroud)
哪里Contact是定义的类
class Contact
{
public:
QString getName();
private:
QString m_name;
};
Run Code Online (Sandbox Code Playgroud)
我想在循环中填充va_list例如:
for (int idx = 0; idx<contacts.count(); idx++)
{
contacts.at(idx)->getName(); // this i would like to pass to va_list
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道我怎么能做到这一点?