И сделал переопределение метода add от типа, теперь если мы вызовем у типа ground add(air* ), то в дочернем классе ground он такую сигнатуру не найдет(пушто там лишь add(ground*)) и пойдет в реализацию метода add(air* )в базовом классе, а там прописан просто throw std::runtime_error("гонка онли для ground"), вроде идея заебись