Если A и B являются интерфейсами, то я бы использовал виртуальный вывод, чтобы «соединить» их (сделать так, чтобы они перекрывались). Если вам нужны другие реализации для Function
, если он вызывается через указатель на A
или B
, тогда я настоятельно рекомендую выбрать другой дизайн. В противном случае будет больно.
Impl
"происходит от" A
и B
означает, что Impl
"является" A
и B
. Я полагаю, вы не имеете в виду это.
Impl
«реализует интерфейс» A
, а B
означает, что Impl
«ведет себя как» A
и B
. тогда тот же интерфейс должен означать то же поведение.
В обоих случаях поведение в зависимости от типа используемого указателя может быть «шизофреническим» и, безусловно, исключать ситуацию.