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

#c #complex-numbers #ambiguous #clog

#c #комплексные числа #неоднозначный #clog

Вопрос:

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

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

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

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

Ответ №1:

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

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

Комментарии:

1. Согласен, у вас должно быть using namesapce std в другом месте — возможно, во включенном заголовке?

2. Это решило проблему, спасибо. Да, в одном заголовке, который я включаю, он использовался.