Ниже приведен очень простой пример того, что я понимаю как статический полиморфизм. Причина, по которой я не использую динамический полиморфизм, заключается в том, что я не хочу препятствовать встраиванию функций PROCESSOR
в op
.
template <class PROCESSOR>
void op(PROCESSOR* proc){
proc->doSomething(5);
proc->doSomethingElse();
}
int main() {
ProcessorY py;
op<ProcessorY>(&py);
return 0;
}
Проблема с этим примером заключается в следующем: не существует явного определения того, какие функции должен определять PROCESSOR
. Если один отсутствует, вы просто получите ошибку компиляции. Я думаю, что это плохой стиль.
У этого также есть очень практический недостаток: интерактивная поддержка IDE, конечно, не может показать вам функции, доступные для этого объекта.
Каков хороший/официальный способ определить публичный интерфейс PROCESSOR
?