Форум программистов, компьютерный форум CyberForum.ru

Abiguous call to overloaded function - C++

Восстановить пароль Регистрация
 
Vampir4a
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 4
03.12.2011, 17:40     Abiguous call to overloaded function #1
Рисую в 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++;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 17:40     Abiguous call to overloaded function
Посмотрите здесь:

C++ ambiguous call to overloaded function
overloaded member function not found C++
'sqrt' : ambiguous call to overloaded function C++
error: call of overloaded ‘Function’ is ambiguous C++
error C2668: 'sqrt' : ambiguous call to overloaded function C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lavan
51 / 51 / 1
Регистрация: 21.03.2009
Сообщений: 371
03.12.2011, 17:56     Abiguous call to overloaded function #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);
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16843 / 5264 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
03.12.2011, 18:05     Abiguous call to overloaded function #3
Цитата Сообщение от lavan Посмотреть сообщение
поэтому такой вызов
Вот такой вызов как раз к неоднозначности и не приведёт, потому что 3 - это параметр типа int, для которого есть функция

Vampir4a, попробуй аргумент вызова функции log явно привести к типу double. Или тип переменной NNN замени на double. А ещё лучше, покажи полный исходник файла (потому что интересно, которые из инклюдов подключались, или какие-то using использовались)
lavan
51 / 51 / 1
Регистрация: 21.03.2009
Сообщений: 371
03.12.2011, 18:23     Abiguous call to overloaded function #4
Цитата Сообщение от Evg Посмотреть сообщение
Vampir4a, попробуй аргумент вызова функции log явно привести к типу double.
Цитата Сообщение от lavan Посмотреть сообщение
double tmp;
mathfun(tmp);
//или
mathfun((double)3);
то что я и предложил
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16843 / 5264 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
03.12.2011, 22:34     Abiguous call to overloaded function #5
Цитата Сообщение от lavan Посмотреть сообщение
то что я и предложил
Только неверно описал причину
lavan
51 / 51 / 1
Регистрация: 21.03.2009
Сообщений: 371
03.12.2011, 23:10     Abiguous call to overloaded function #6
Цитата Сообщение от Evg Посмотреть сообщение
Только неверно описал причину
и причину верно описал,по ошибке вместо float записал int.за что пардоньте.НО СУТЬ ТА
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 20:05     Abiguous call to overloaded function
Еще ссылки по теме:

C++ no overloaded function takes 3 arguments
C++ пишет ошибку ('sqrt' : ambiguous call to overloaded function)
No instance of overloaded function C++

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

Или воспользуйтесь поиском по форуму:
Vampir4a
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 4
04.12.2011, 20:05  [ТС]     Abiguous call to overloaded function #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
заменил на дабл - получилось - спасибо ))
Yandex
Объявления
04.12.2011, 20:05     Abiguous call to overloaded function
Ответ Создать тему
Опции темы

Текущее время: 05:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru