gpt4 book ai didi

c++ - 在 C++ 中访问父命名空间

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:57 25 4
gpt4 key购买 nike

我正在使用两个第 3 方框架。我想从两个框架访问一个新类。

第一个框架使用嵌套命名空间,如:

namespace space1 {
namespace space2 {
class 3rdparty{
}
}
}

第二个框架不使用任何命名空间。如果我尝试从使用命名空间的第一个框架调用我自己的类,我根本无法正确调用。在最好的情况下,我最终会遇到链接错误。

我的类(class)是这样的:

PlugIn_Processor.h:

class PlugIn_Processor{
public:
//constructor
PlugIn_Processor();

};

PlugIn_Processor.cpp:

#include "PlugIn_Processor.h"
PlugIn_Processor::PlugIn_Processor(){
};

使用第一个框架的cpp文件如下所示:

     namespace space1 {
namespace space2 {
3rdparty::3rdparty{
PlugIn_Processor * plugIn_Processor;
plugIn_Processor = new PlugIn_Processor();
}
}
}

但是,无论我做什么,在调用构造函数时都会遇到链接器错误。一种解决方案是将所有内容都放在第 3 方框架的 namespace 下,但由于我想从不同的框架访问该类,所以我不想将所有内容都放在该 namespace 下。我该怎么做才能解决这个问题?我尝试的一切都失败了。

最佳答案

要访问父作用域,请使用双冒号 (::),如:

class Blah;
namespace alpha
{
class Blah;
}
namespace bravo
{
class Blah;
// can access outer class as ::Blah
// and one from alpha as ::alpha::Blah
}

但请注意,在您的示例中,不应编译以下代码:

3rdparty::3rdparty{

这实际上是一段代码吗?它真的为你编译了吗?此外,请务必检查您是否确实链接到定义引用类的编译单元。

关于c++ - 在 C++ 中访问父命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102949/

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