Здравствуйте bnk, Вы писали:
bnk>Здравствуйте __Andrey__, Вы писали:
bnk>А стандартным спсобом (через va_list) чем-то не устраивает ?
bnk>Т.е. что мешает написать так
bnk>bnk>void Func2(IObj& aObj,...)
bnk>{
bnk> va_list marker;
bnk> va_start(marker, aObj);
bnk> int param1 = va_arg(marker, int);
bnk> int param2 = va_arg(marker, int);
bnk> long param3 = va_arg(marker, long);
bnk> Func3(param1, param2, param3);
bnk> va_end(marker);
bnk>}
bnk>void Func3(int param1,int param2,long param3)
bnk>{
bnk>}
bnk>
Тут все несколько сложнее.
Нужно решение с помощью которого
функции могут иметь любые параметры.
Первый всегда — указатель на некий обьект
остальные неизвестны и любое количество.
Т.е. в конечном итоге как я это вижу —
одно решение на любое количество параметров через один два макроса.
1 —
viod iFunc1(IObj* a,int a1,long a2,char a3)
{
return sFunc1(a,a1,a2,a3);
}
void sFunc1(IObj* a,...)
{
// общее рещение на передачу пораметров в
// return Func1()
}
void Func1(int a1,long a2,char a3)
{
// ...
}
2 —
viod iFunc2(IObj* a,char* a3)
{
return sFunc1(a,a3);
}
void sFunc2(IObj* a,...)
{
// общее рещение на передачу пораметров в
// return Func2()
}
void Func2(char* a3)
{
// ...
}
к сожалению Выше решение
возможно только если знать типы и количество параметров.
сдесь этого нет.