С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Vampir4a
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 4
1

Abiguous call to overloaded function

03.12.2011, 17:40. Просмотров 666. Ответов 6
Метки нет (Все метки)

Рисую в opengl вентилятор
Это - фрагмент кода, который рисует лопасть вентилятора. Тут обнаруживается 17 ошибок, в тех местах, где есть логарифм. Ребят помогите, а то я никак не разберусь (

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
double bFan=5;
double lFan=15; 
//glBindTexture(GL_TEXTURE_2D,texture4);
float N=30;
float NNN=100;
int i=0;
while(i<N)
{
glBegin(GL_QUADS);
glTexCoord2d(i/N,0);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))), 2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(-bFan*log(i+25)/log(NNN),lFan*i/N,-bFan*(i)/N*sin(i*M_PI/(N*1.5)));
glTexCoord2d(i/N,1);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))),2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(bFan*log(i+25)/log(NNN),lFan*i/N,bFan*(i)/N*sin(i*M_PI/(N*1.5)));
glTexCoord2d((i+1.0)/N,1);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))),2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(bFan*log((i+26))/log(NNN),lFan*(i+1)/N,bFan*(i+1)/N*sin((i+1)*M_PI/(N*1.5)));
glTexCoord2d((i+1.0)/N,0);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))),2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(-bFan*log((i+26))/log(NNN),lFan*(i+1)/N,  *(i+1)/N*sin((i+1)*M_PI/(N*1.5)));
glEnd();
i++;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 17:40
Ответы с готовыми решениями:

Ambiguous call to overloaded function
При использовании sqrt (да и других мат. функций(sin, cos, pow...) ) выдает...

Call of overloaded template function is ambiguous
Добрый вечер. Есть два метода: template&lt;typename T, uint8_t count, bool msb =...

'sqrt' : ambiguous call to overloaded function
здраствуйте! ошибка в заголовке. Чё то я запамятовал как указать компилятору...

Error: call of overloaded ‘Function’ is ambiguous
log.cpp:166:25: error: call of overloaded ‘localtime_r(time_t*, tm*)’ is...

Ошибка: ('sqrt' : ambiguous call to overloaded function)
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace...

6
lavan
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
03.12.2011, 17:56 2
математические функции перегруженны например
C++
1
2
int mathfun(int);
int mathfun(double)
поэтому такой вызов
C++
1
mathfun(3);
Приводит к неоднозначности,о чем вам компилятор и говорит
надо так
C++
1
2
3
4
double tmp;
mathfun(tmp);
//или
mathfun((double)3);
0
Evg
Эксперт CАвтор FAQ
19361 / 7210 / 538
Регистрация: 30.03.2009
Сообщений: 20,161
Записей в блоге: 30
03.12.2011, 18:05 3
Цитата Сообщение от lavan Посмотреть сообщение
поэтому такой вызов
Вот такой вызов как раз к неоднозначности и не приведёт, потому что 3 - это параметр типа int, для которого есть функция

Vampir4a, попробуй аргумент вызова функции log явно привести к типу double. Или тип переменной NNN замени на double. А ещё лучше, покажи полный исходник файла (потому что интересно, которые из инклюдов подключались, или какие-то using использовались)
0
lavan
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
03.12.2011, 18:23 4
Цитата Сообщение от Evg Посмотреть сообщение
Vampir4a, попробуй аргумент вызова функции log явно привести к типу double.
Цитата Сообщение от lavan Посмотреть сообщение
double tmp;
mathfun(tmp);
//или
mathfun((double)3);
то что я и предложил
0
Evg
Эксперт CАвтор FAQ
19361 / 7210 / 538
Регистрация: 30.03.2009
Сообщений: 20,161
Записей в блоге: 30
03.12.2011, 22:34 5
Цитата Сообщение от lavan Посмотреть сообщение
то что я и предложил
Только неверно описал причину
0
lavan
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
03.12.2011, 23:10 6
Цитата Сообщение от Evg Посмотреть сообщение
Только неверно описал причину
и причину верно описал,по ошибке вместо float записал int.за что пардоньте.НО СУТЬ ТА
0
Vampir4a
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 4
04.12.2011, 20:05  [ТС] 7
Цитата Сообщение от Evg Посмотреть сообщение
Vampir4a, попробуй аргумент вызова функции log явно привести к типу double. Или тип переменной NNN замени на double. А ещё лучше, покажи полный исходник файла (потому что интересно, которые из инклюдов подключались, или какие-то using использовались)
C++
1
2
3
4
5
6
7
8
9
#include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h>
#include <GL/glaux.h>
#include <GL/GL.h>
#include <GL/GLU.h>
#include <Math.h>
#define M_PI 3.14
#define NUM_TEXTURES 3
заменил на дабл - получилось - спасибо ))
0
04.12.2011, 20:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 20:05

Ambiguous call to overloaded function / рекурсивная функция
Функция должна вызываться из движка на удаление связных списков....

Error C2668: 'sqrt' : ambiguous call to overloaded function
Собственно задание: треугольник задан координатами своих вершин. Найти его...

Ошибка error: call of overloaded
Помогите разобраться с ошибкой, не хочет компилировать! ошибки не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru