プロジェクトの C++ でリフレクションの形式を実装しようとしています。タグ付きのクラスを一種のテンプレートとしてマップに登録し、次に共有基本クラスの cloneNew メソッドを呼び出して、必要なオブジェクトを実際に作成するという考え方です。ただし、va_list を使用してこの機能を実装しようとすると、奇妙な結果が得られます。問題のコードは次のとおりです。
GameObject* SphereObstacle::cloneNew(const Vector& position, double charge, const Vector& dipole, ...)
{
va_list v1;
va_start(v1, dipole);
double radius = va_arg(v1, double);
va_end(v1);
return new SphereObstacle(position, charge, dipole, radius);
}
va_list から読み取ろうとするたびに、巨大な値が返されます。それはほとんどそのポインタのようです。私の唯一の考えは、これが基本クラスの仮想メソッドの実装であるという事実によって問題が引き起こされているということですが、それが問題であることを示唆するものはオンラインで見つかりませんでした。私が間違っているのは何ですか?