Предположим, у меня есть интерфейс
class I{
public:
virtual void f(int id)=0;
virtual void g(int id, float x)=0;
}
Мне нужен прокси-класс, чтобы выполнить какое-то сопоставление идентификатора с указателем
class Proxy : I
{
I * i[5];
public:
void f(int id)
{
i[id]->f(id);
}
void g(int id, float x)
{
i[id]->g(id, x);
}
}
Итак, когда я пишу
Proxy *p;
p->f(1);
f вызывается для объекта с id=1
таких случаев несколько и интерфейсы довольно большие. Поэтому я не хочу кодировать все функции в прокси-классе. Есть ли способ сделать это автоматически? возможно, используя макросы, шаблоны, перегрузку «->» и т. д.