符号错误不明确

Ambiguous symbol error?

本文关键字:不明确 错误 符号      更新时间:2023-10-16
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;  
    }  
}  

我从来没有遇到过这个错误,这很令人沮丧。

您的变量maxstd::max()冲突。 尝试使用其他名称,它应该可以修复该错误。

我认为问题不在于std::max(),而在于minwindef.h中的这些可怕的#define's

#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 NOMINMAXstdafx.h

我在

C++中使用Intel RealSense 3D SDK时遇到了同样的问题。我在自己的代码中有一个hand.cpphand.h,当我using namespace Intel::RealSense;时,它恰好是冲突。为了修复它,我删除了using namespace Intel::RealSense;,并将 PXC 添加到与实感 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:openarkObject3D.h