Этот вопрос похож на мой, , возможно ли изменить приоритет операторов неявного преобразования .К сожалению, не существует удовлетворительного решения, не существует приоритета среди неявных преобразований.
Одним из решений является дополнительная перегрузка (и) для неоднозначной функции или оператора, в вашем случае это оператор + (const Testable &, int) и operator + (const Testable &, double).
Другое решение состоит в том, чтобы просто оставить только одно неявное преобразование, в вашем случае наилучшим будет целое число.
Используйте неявное преобразование только тогда, когда выотчаянно нужно автоматическое преобразование в данный тип.Явные toInt, toDouble функции намного лучше, они проясняют код и не скрывают потенциальных ловушек.Используйте явное ключевое слово для унарных конструкторов, они блокируют неявное преобразование через этот конструктор.
И нет, неявное преобразование невозможно, даже если они являются операторами или конструкторами.Стандарт C ++ обязывает только 1 неявное преобразование быть в последовательности преобразования.