【问题标题】:Ambiguous symbol error?模棱两可的符号错误?
【发布时间】:2012-03-17 13:46:43
【问题描述】:
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;  
    }  
}  

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

【问题讨论】:

    标签: c++ compiler-errors


    【解决方案1】:

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

    【讨论】:

    • 正是这样的原因让using namespace std;成为一场噩梦。
    • 与其重命名max,我建议不要出于这个原因使用 using 指令using namespace std;
    • 或者显式定义max(::max)的命名空间
    【解决方案2】:

    我认为问题不在于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

    【讨论】:

      【解决方案3】:

      我在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 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多