2012-02-28 36 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; 
    } 
} 

Tôi chưa bao giờ gặp lỗi này và điều này thật khó chịu.Lỗi biểu tượng mơ hồ?

Trả lời

17

Biến số max xung đột với std::max(). Hãy thử sử dụng một tên khác và nó phải sửa lỗi đó.

+5

Đó là lý do khiến điều này khiến 'sử dụng không gian tên std; 'như một cơn ác mộng. –

+0

Cảm ơn bạn đã làm việc! – Haxify

+3

Thay vì đổi tên 'max', tôi khuyên bạn không nên sử dụng chỉ thị sử dụng' using namespace std; 'cho chính xác lý do này. –

0

Tôi gặp sự cố tương tự khi sử dụng Intel RealSense 3D SDK trong C++. Tôi có một số hand.cpphand.h trong mã của riêng tôi và khi tôi có using namespace Intel::RealSense; nó xảy ra xung đột. Để sửa lỗi, tôi đã xóa using namespace Intel::RealSense; và thêm PXC vào từng tên lớp liên quan đến SDK RealSense. Dưới đây là một số ví dụ về những thay đổi mới: #

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; 

và đây là những gì các mã cũ trông giống như:

#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; 

Sau khi thay đổi, tôi không nhận được lỗi sau nữa.

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