va_arg を使用して、GUI ライブラリでジェネリック ファクトリ関数を作成しようとしています。同じ関数で va_arg を 2 回渡すと、2 つの異なる値ではなく同じ値が渡されます。
GUIObject* factory(enumGUIType type, GUIObject* parent, ...){
va_list vl;
va_start(vl, parent);
...
label->SetPosition(va_arg(vl, int), va_arg(vl, int));
va_end(vl);
return finalObjectPointer;
}
factory(LABEL, theParent, 100,200); // Results in position 200:200
この予期しない動作の原因は何ですか?