gpt4 book ai didi

c++ - 对命名空间范围感到困惑!

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:59 27 4
gpt4 key购买 nike

我对“使用命名空间”声明的范围感到困惑...希望有人能为我解决这个问题!

我正在使用两个库(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'是整个项目中唯一出现的(我通过搜索仔细检查过)。 header 中没有“使用命名空间”,仅在 cpp 文件中使用。

但是,在编译 OgreLogic.cpp 时出现歧义错误,例如:

cxmat.hpp(3465) : error C2872: 'uchar' : ambiguous symbol 1> could be 'd:\libraries\opencv2.1\include\opencv\cxtypes.h(154) : unsigned char uchar' 1> or
'd:\libraries\ogresdk\include\ogre\OgrePrerequisites.h(106) : Ogre::uchar'

我好像误会了什么,因为我觉得这样应该没问题吧?

非常感谢任何帮助!

谢谢,

jack

最佳答案

看起来正在发生的事情是你有一行声明了一个 uchar,例如uchar x = 12 之类的。在文件的顶部,您已经指定您正在使用 Ogre 命名空间。编译器在确定您使用的 uchar 时遇到问题 - cxtypes.h 还是 Ogre::uchar。

尝试取出 using namespace Ogre; 并将函数调用作为 Ogre::doStuff() 来消除歧义。

关于c++ - 对命名空间范围感到困惑!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com