Используйте указатель и функцию вызова в C ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Используйте указатель и функцию вызова в C ++

Сообщение Anonymous »


[*] Существует два класса 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())
Однако я получаю «Expression func не может использоваться в качестве функции». Мой вариант использования оказался более конкретным, чем приведенный выше пример. В любом случае, принятый ответ ниже решает проблему в моем варианте использования. Я ищу что -то легкое.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ction-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»