2012-02-28 62 views
9
int ii, maxnum; 
for(ii=1; ii<=num-1; ii++) { 
    if(count[ii]>max) { // the part where I get C2872 Ambiguous Symbol error 
     max = count[ii]; // the part where I get C2872 Ambiguous Symbol error 
     maxnum = ii; 
    } 
} 

我從來沒有得到這個錯誤,這是令人沮喪的。模糊符號錯誤?

回答

17

您的變量maxstd::max()衝突。嘗試使用不同的名稱,它應該修復該錯誤。

+5

這就是使用'namespace std;'這樣的噩夢的原因。 – 2012-02-28 03:32:45

+0

謝謝你的工作! – Haxify 2012-02-28 03:33:55

+3

與其重命名'max',我會建議不要使用using指令'using namespace std;'正是出於這個原因。 – 2012-02-28 03:57:13

0

我在C++中使用Intel RealSense 3D SDK時遇到同樣的問題。我在自己的代碼中有hand.cpphand.h,當我有using namespace Intel::RealSense;時,它恰好是一個衝突。爲了解決此問題,我刪除了using namespace Intel::RealSense;並將PXC添加到與RealSense SDK相關的每個類名稱。 這裏有新的變化的一些例子: #

include "RealSense/SenseManager.h" 
#include "RealSense/SampleReader.h" 
#include "util_render.h" 
#include "Visualizer.h" 
#include <iostream> 
using namespace std; 
//using namespace Intel::RealSense; 
PXCSenseManager *pp = PXCSenseManager::CreateInstance(); 
PXCCapture::Device *device; 
PXCCaptureManager *cm; 

和這裏的看着什麼舊的代碼,如:

#include "RealSense/SenseManager.h" 
#include "RealSense/SampleReader.h" 
#include "util_render.h" 
#include "Visualizer.h" 
#include <iostream> 
using namespace std; 
using namespace Intel::RealSense; 
SenseManager *pp = SenseManager::CreateInstance(); 
Capture::Device *device; 
CaptureManager *cm; 

更改後,我沒有收到以下錯誤了。

Severity    Code    Description Project File    Line    Suppression State 
Error   C2872   'Hand': ambiguous symbol    OpenARK-SDK c:\openark\Object3D.h