ошибка: 'std :: sin (x)' не может использоваться как функция

0

Не удалось скомпилировать программу C++ в ubuntu.

float x;
x=(m*Ts1)-(n*Ts);
new_samples[m]=(original_samples[n*Ts]*(sin(x))(2*pi*B))/(2*pi*B*(x));

Я хочу использовать функцию sin в C++. Я включил cmath. Тем не менее он дает ошибку:

error: 'std :: sin (x) не может использоваться как функция.

  • 3
    Очевидно, в коде есть ошибка, которую вы не показываете. Я предлагаю вам исправить это, тогда ошибка компилятора исчезнет. (Или вы можете показать код, и мы можем помочь вам найти ошибку)
  • 7
    SSCCE пожалуйста
Показать ещё 2 комментария
Теги:

2 ответа

8
Лучший ответ

Это не верно:

(sin(x))(2*pi*B)

C++ не имеет неявного умножения, как вы привыкли в математике - (a)(b) пытается вызвать a как функцию, а не умножать a и b, и в этом случае a является sin(x). Возвращаемое значение sin(x) является double, а double не является вызываемой функцией.

Вы действительно хотели написать это:

(sin(x)) * (2*pi*B)
  • 0
    Я рад, что кто-то нашел время, чтобы ответить на этот вопрос, а не "против" + голосование, чтобы закрыть. Очень чуть не закончилась с другим разочарованным новичком из-за чрезмерно усердных избирателей: - /
  • 3
    @davbryn: До того, как какой-либо код был опубликован, он был неопровержимым и продвигался в этом направлении; но после того, как код был опубликован, я удалил свое понижение и смог ответить на него.
Показать ещё 3 комментария
0

Учитывая, что (sin(x)) * (2*pi*B))/(2*pi*B*(x)) является просто sin(x)/x; , Я сильно подозреваю, что вы хотели написать либо sin(2*pi*B)/(2*pi*B*(x)); или sin(2*pi*B*x)/(2*pi*B*(x)); , (т.е. sinc(2*pi*B*x), но это не C++).

Мы немного догадываемся, и компилятор тоже. То, что вы написали, просто не имеет большого смысла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню