View Full Version : [C++] Errori di compilazioni
ciao..ieri ho riscontrato un problema con un sorgente che avevo scritto tempo fa. Il fatto e' che tempo fa (circa 1 anno) il sorgente (compilato con Visual studio) non mi ha dato problemi ed e' stato creato l'eseguibile....
Ora pero' lo stesso sorgente e con lo stesso compilatore mi da un sacco di errori che non riesco a capire..
quando lancio la compilazione mi appare una scritta con scritto che il progetto non e' aggiornato. :confused:
vi linko il file col codice sorgente >> link (http://www.humyo.com/F/9871151-1622987531)
grazie in anticipo!!! :D
giangian2
13-10-2009, 10:53
Ciao,
più che il sorgente sarebbe utile che postassi gli errori di compilazione. ;)
Marco
si scusa..hai ragione..:)
ecco tutti gli errori che mi compaiono:
qui vedete degli errori riguardo alla SQRT(). Precedentemente me li dava anche con la FABS(), che sostituendola con la ABS() ho risolto (sembra)
1>------ Inizio compilazione: Progetto: equazion2, Configurazione: Debug Win32 ------
1>Compilazione in corso...
1>equazion.cpp
1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(523) : warning C4018: '<=': errata corrispondenza tra signed e unsigned
1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(774) : error C2668: 'sqrt': chiamata ambigua a funzione in overload
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)'
1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(775) : error C2668: 'sqrt': chiamata ambigua a funzione in overload
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)'
1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(788) : error C2668: 'sqrt': chiamata ambigua a funzione in overload
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)'
1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(789) : error C2668: 'sqrt': chiamata ambigua a funzione in overload
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)'
1>Il log di compilazione è stato salvato in 'file://e:\MyWorld\Coding\C++\ES C++\cap4_equazione2grado\equazione2grado\equazion2\Debug\BuildLog.htm'
1>equazion2 - 4 errore/i, 1 avviso/i
========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========
giangian2
14-10-2009, 07:18
Ciao,
la funzione 'sqrt' ha 3 definizioni (vedi msdn)
double sqrt(
double x
);
float sqrt(
float x
); // C++ only
long double sqrt(
long double x
); // C++ only
la tua funzione 'se_radice_intera' prende in input 'const int soluzione[MAXVETT]' che è un intero, poi nel codice chiami:
double sol1 = sqrt( fabs(soluzione[0]) ); //numeratore
il compilatore non sa quale overload di 'sqrt' utilizzare. Molto banalmente potresti castare 'soluzione[0]' come 'double':
double sol1 = sqrt( fabs((double)soluzione[0]) ); //numeratore
lo stesso discorso vale anche per 'fabs'.
ciao
Marco
Ciao,
la funzione 'sqrt' ha 3 definizioni (vedi msdn)
double sqrt(
double x
);
float sqrt(
float x
); // C++ only
long double sqrt(
long double x
); // C++ only
la tua funzione 'se_radice_intera' prende in input 'const int soluzione[MAXVETT]' che è un intero, poi nel codice chiami:
double sol1 = sqrt( fabs(soluzione[0]) ); //numeratore
il compilatore non sa quale overload di 'sqrt' utilizzare. Molto banalmente potresti castare 'soluzione[0]' come 'double':
double sol1 = sqrt( fabs((double)soluzione[0]) ); //numeratore
lo stesso discorso vale anche per 'fabs'.
ciao
Marco
si hai ragione :) ...ho guardato un po' ingiro e in effetti sqrt e fabs non acettano valori interi..
il fatto e' che gcc compiler me lo fa passare e visual studio no...mi sembra piuttosto strano, anche perche' come ho gia' detto tempo fa avevo compilato lo stesso sorgente con visual studio e senza problemi
comunque grazie;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.