Попытка воспроизвести то, что в C# вы могли бы сделать что-то вроде этого:Handle неизвестное количество неопределенных объектов для регистрации
string FormatString(params object[] args) {
return string.Format(CultureInfo.InvariantCulture, args);
}
И в Obj-C это будет выглядеть следующим образом:
#include <stdarg.h>
void logObjects(id firstObject, ...) {
va_list args;
va_start(args, firstObject);
id obj;
for (obj = firstObject; obj != nil; obj = va_arg(args, id))
NSLog(@"%@", obj);
va_end(args);
}
logObjects(@"foo", [NSNumber numberWithInt:4], @"bar", nil);
Я знаком с переменной длиной параметра, но не слишком уверен, как хранить аргументы, а затем отправлять их в std :: cout. Возможно ли это?
Внимание! Я хочу отправить любой объект, который может обрабатывать оператор < <. Просто взгляните на эту функцию в качестве замены для:
std::cout << "test" << someObject << int << someOtherObject;
Я использую boost и хотел бы оставить его независимым от платформы. Эта функция будет частью класса журнала в общей библиотеке lib.
Можете ли вы использовать C++ 11, или вы ограничены C++ 03? – ildjarn
все, что работает на главном os aka nothing ms spec – chikuba
Это не отвечает на мой вопрос вообще. Какой компилятор вы используете? – ildjarn