[*] Существует два класса A и b , каждый , имеющие функции f и g (с одинаковыми подписями).
[*] funt is_a (uintptr_t ptr) экземпляр и аналогично для is_b .
[*] Функция a* use_a (uintptr_t ptr) преобразует ptr
f() : use_B(ptr)->f();
...
answer = is_A(ptr) ? use_A(ptr)->g() : use_B(ptr)->g();
[/code]
Проблема: можно ли упростить этот код (например, с помощью макроса или шаблона)?
Я попробовал следующий макрос:
Код: Выделить всё
#define call(ptr, func) (is_A(ptr) ? use_A(ptr)->func() : use_B(ptr)->func())
Подробнее здесь: https://stackoverflow.com/questions/797 ... ction-in-c
Мобильная версия