Единые интерфейсы - это хорошо.Это означает, что вы должны реализовать все методы в интерфейсе, даже если это означает, что у вас будут пустые методы.Для этой проблемы нет шаблона проектирования, потому что, во-первых, это не настоящая проблема.
Подумайте об этом на мгновение: скажем, у вас есть интерфейс Car
с методами Accelerate()
и Brake()
.Класс, производный от Car
, должен реализовывать все методы.Хотели бы вы, чтобы объект, полученный из Car
, реализовал метод Accelerate()
, но не метод Brake()
?Это было бы удивительно небезопасно Car
!
Интерфейс в контексте ООП должен иметь четко определенный контракт, которого придерживаются обе стороны.В C ++ это обеспечивается в определенной степени, требуя, чтобы все чистые виртуалы были реализованы в производном классе (ах).Попытка создания экземпляра класса с нереализованными виртуальными методами приводит к ошибке (ошибкам) компиляции, если предположить, что никто не использует глупые уловки, чтобы обойти это.
Вы возражаете против создания пустых методов, потому что они вызывают предупреждения компилятора.В вашем случае просто опустите имя параметра:
void funC(int) // Note lack of parameter name
{
}
Или закомментируйте имя:
void funC(int /*input3*/)
{
}
Или даже с помощью шаблонов!
template<class T> void ignore( const T& ) { }
//...
void funC(int input3)
{
ignore(input3);
}