Предположим, у меня было это.
class A {
public:
int f1();
int f2();
}
Есть ли способ использовать шаблоны / макросы / оба для создания класса, который ведет себя следующим образом?
class GeneratedClass {
public:
GeneratedClass(InjectedFunction injected_function) { /* store it */ }
int f1() {
injected_function();
/* forward call to "inner class" and return its value */
}
int f2() {
injected_function()
/* forward call to "inner class" and return its value */
}
}
По сути, я хочу иметь возможность генерировать класс, который поддерживает все функции данного класса, но делает что-то, прежде чем он вслепую перенаправляет вызов.
Этот класс будет создан с чем-то вроде.
SomeClassTemplate<A> infected_a(injected_function);