Как я могу устранить возникающую неоднозначность при использовании засорения для вычисления натурального логарифма с комплексными числами?

У меня сложный двойной массив eigenvalues из которых я хочу получить натуральный логарифм каждой записи с помощью clog,

for (int i = 0; i < n; ++i)
{
    qq[i] = clog(eigenvalues[i]);
}

Я уже уронила using namespace std; но я все еще получаю error: reference to 'clog' is ambiguous,

Как я могу дать понять, что я хочу использовать clog от complex.h а не из iostream?

1 ответ

Решение

Я не смог воспроизвести это с GCC 7.3 без using namespace std но в целом все функции из заголовков C находятся в глобальном пространстве имен. Следовательно, вы должны быть в состоянии разрешить неоднозначность, поставив префикс clog с :::

for (int i = 0; i < n; ++i)
{
    qq[i] = ::clog(eigenvalues[i]);
}
Другие вопросы по тегам