可能重複:
C++ compiler error: ambiguous call to overloaded function歧義平方根
只是複製一些代碼從PDF到兩個C++助洗劑XE2和Visual Studio表達2012二者都編譯器給錯誤代碼關於ambiquity。我剛剛開始,所以我不知道該怎麼做。也許我的教科書(pdf)現在已經陳舊過時了?它被稱爲「在14天內學習C++」。無論如何,這裏是複製的代碼。
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#pragma hdrstop
void getSqrRoot(char* buff, int x);
int main(int argc, char** argv)
{
int x;
char buff[30];
cout << 「Enter a number: 「;
cin >> x;
getSqrRoot(buff, x);
cout << buff;
getch();
}
void getSqrRoot(char* buff, int x)
{
sprintf(buff, 「The sqaure root is: %f」, sqrt(x));
}
的錯誤代碼我在C++得到助洗劑是:
[BCC32錯誤] SquareRoot.cpp(19):中C的std :: SQRT(浮點)」之間E2015歧義:\程序文件(x86)\ embarcadero \ rad studio \ 9.0 \ include \ windows \ crtl \ math.h:266'和'std :: sqrt(long double)在c:\ program files(x86)\ embarcadero \ rad studio \ 9.0 \包括\ WINDOWS \ CRTL \文件math.h:302' 全解析方面 SquareRoot.cpp(18):解析:無效getSqrRoot(字符*,INT)
在一個側面說明,在我的PDF手冊引號是不同的人物正常「,我輸入。這些「也與編譯器不兼容。也許任何人都知道這個問題的解決方案?提前致謝。
有沒有修復你應該使用「...」,而不是你的pdf中的任何其他。你可以將你的int轉換爲double:'sqrt(static_cast(x))' –
Borgleader
我只是讓'getSqrRoot'爲'double'。 – chris
在X時期*書中避免任何* C++,除非這段時間是「兩生」。這裏有一個好書的列表:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list –