У меня есть Visual Studio 2008 C ++ dll, где я хотел бы принять переменное число аргументов и знать тип каждого из них. Например:
__declspec( dllexport ) void Foo( const char* object, const char* function, ... )
{
printf( "%s::%s( ", object, function );
va_list list;
va_start( list, function );
while( va_arg( list, ??? ) )
{
printf( "[%s] %s ", type, value );
}
va_end( list );
printf( " )\r\n" );
}
Ожидаемое использование примерно так:
Buzz api;
int a = 1;
api.DoSomething( a, "hello", 0.2f );
Foo( "Buzz", "DoSomething", a, "hello", 0.2f );
Где ожидаемый результат будет выглядеть так:
Buzz::DoSomething( [int] 1, [const char*] "hello", [float] 0.2 )
Возможно ли это или что-то подобное с RTTI? Если решение с переменным аргументом невозможно (и я подозреваю, что это не так), я согласен с тем, что включает в себя несколько перегрузок для 1-n аргументов.
Спасибо,
PaulH