Моя проблемаПерегрузка функции ambigious
У меня есть это как заголовки функций:
const FlowTools::LocalFlow <double>& harmonic(const int i, const int j, const int k) const;
const FlowTools::LocalFlow < std::complex <double> >& harmonic(const int i, const int j, const int k, const int f) const;
LocalFlow
это просто класс, который имеет пять физических параметров (скорость 3D, плотность и давление). Я хочу, чтобы получил только двойное значение, если в заголовке нет частотного параметра. Прямой компонент также указывает, если вы пишете f=0
в заголовке, но в этом случае я получаю сложное значение. Мне не хотелось бы редактировать всю программу следующим образом: xxx.harmonic(). Real(). Перед перегрузкой функции он вызывает flowField(int i, int j, int k)
. Я делаю рефакторинг.
Теперь я тестирую функцию с Test Google (блок библиотеки тестирования для C++), как это:
ASSERT_THROW(xxx.harmonic(d,d,d), ERROR);
ASSERT_THROW(xxx.harmonic(d,d,d,0), ERROR);
... И получить эту ошибку для первой функции:
'
ASSERT_THROW(xxx.harmonic(d,d,d), ERROR)
'неоднозначные' Кандидаты являются:
FlowTools::LocalFlow<double> & harmonic(int, int, int)
FlowTools::LocalFlow<std::complex<double>> & harmonic(int, int, int, int) '
Какая у меня ошибка?
отступа код с четырьмя пробелами (или выберите его затем Ctrl + K). – Jarod42