Автоматический класс прокси

Предположим, у меня есть интерфейс

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

таких случаев несколько и интерфейсы довольно большие. Поэтому я не хочу кодировать все функции в прокси-классе. Есть ли способ сделать это автоматически? возможно, используя макросы, шаблоны, перегрузку «->» и т. д.

8
задан Volkan 19 April 2012 в 14:55
поделиться