Edvard's blog

By Edvard, 12 years ago, In Russian

Всем привет. Хочу написать функцию которой передается количество аргументов и аргументы возможно разного типа. Например, чтобы можно было вызвать функцию примерно так print(3, 1, 1.9, "abc"). Погуглил немного ничего для определения типа не нашел может кто знает как это сделать? Если для параметров тип заранее известен то можно так:

// ...
#include <cstdarg>
// ...
inline void print(int n, ...)
{
	va_list params;
	va_start(params, n);
	
	if (n == 1)
	{
		int x = va_arg(params, int);
		cerr << "int " << x << endl;
	}
	else
	{
		char* x = va_arg(params, char*);
		cerr << "string " << x << endl;
	}
	
	va_end(params);
}
// ...

UPD: Всем спасибо за ответы. Результат видимо такой: в обычном стандарте С++ нормально это не делается, а в С++11 есть свои фишки о которых написал cmd

  • Vote: I like it
  • +3
  • Vote: I do not like it