【发布时间】:2011-07-17 12:08:02
【问题描述】:
我对“使用命名空间”声明的范围感到困惑......希望有人能帮我解决这个问题!
我正在使用两个库(OpenCV 和 Ogre3D)。我有两个 cpp 文件,一个专门使用 OpenCV (PoseEstimator.cpp),另一个专门使用 Ogre3D (OgreLogic.cpp)。
OgreLogic.cpp 的顶部是这样的:
#include "stdafx.h"
#include "PoseEstimator.h"
#include "OgreLogic.h"
using namespace Ogre;
而 PoseEstimator.cpp 的顶部看起来像这样:
#include "StdAfx.h"
#include "PoseEstimator.h"
using namespace cv;
using namespace std;
这个'using namespace cv'是整个项目中唯一出现的(我通过搜索进行了双重检查)。标头中没有“使用命名空间”,仅在 cpp 文件中。
但是,在编译 OgreLogic.cpp 时出现歧义错误,例如:
cxmat.hpp(3465) : 错误 C2872: 'uchar' : 模棱两可的符号 1> 可能是 'd:\libraries\opencv2.1\include\opencv\cxtypes.h(154) : unsigned char uchar' 1> 或
'd:\libraries\ogresdk\include\ogre\OgrePrerequisites.h(106) : 食人魔::uchar'
我似乎误会了什么,因为我认为这应该没问题?
非常感谢任何帮助!
谢谢,
杰克
【问题讨论】:
标签: c++ namespaces scope