我正在使用两个第三方框架。我想从两个框架中访问一个新类。
第一个框架使用嵌套的命名空间,如:
namespace space1 {
namespace space2 {
class 3rdparty{
}
}
}
第二个框架不使用任何名称空间。 如果我尝试从使用命名空间的第一个框架调用我自己的类,我根本无法做到正确。在最好的情况下,我最终会遇到链接错误。
My 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();
}
}
}
但是,无论我做什么,我在调用构造函数时都会遇到链接器错误。 解决方案是将所有内容放在第三方框架的名称空间下,但是因为我想从不同的框架访问该类,所以我不想将所有内容放在该命名空间下。 我该怎么办才能解决这个问题?我试过的一切都失败了。
答案 0 :(得分:0)
要访问父作用域,请使用双冒号(::),如下所示:
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{
这实际上是一段代码吗?它真的为你编译吗?此外,请务必检查您是否实际链接了定义引用类的编译单元。