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;
}
}
我从来没有得到过这个错误,这令人沮丧。
答案 0 :(得分:17)
您的变量max
与std::max()
冲突。尝试使用其他名称,它应该修复该错误。
答案 1 :(得分:0)
在Intel RealSense 3D SDK
中使用C++
时遇到了同样的问题。我自己的代码中有hand.cpp
和hand.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
答案 2 :(得分:0)
我认为问题不是std::max()
,而是#define's
中的这些可怕的minwindef.h
:
#ifndef NOMINMAX
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#endif /* NOMINMAX */
在项目设置中使用#define NOMINMAX
或在stdafx.h
中使用。