C++ 中的命名空间冲突
namespace conflict in c++
我有以下C++类。
xyz.h
class xyz {
public:
static int abc();
};
QWE.H
#include xyz.h
namespace xyz {
class qwe{
public:
void bnm() {
int value = xyz::abc();
}
};
}
如何在此处访问xyz::abc()
。我在这里收到一个编译错误,说abc
不是xyz
的成员。我理解它试图在这个 xyz
命名空间中搜索 abc
方法的原因,而理想情况下它应该得到的是 xyz
类中的静态方法。
有没有办法在不更改命名空间名称的情况下解决此问题?
不要创建与命名空间(或其自己的命名空间)同名的类。
在您的特定情况下,没有直接的解决方案。Altough C++有一个elaborated type specifier
的概念,特别是:
xyz ab; // The defn is ambiguous.
class xyz ab; // The ambiguity is resolved.
您也可以尝试一下:
class xyz dummy;
int value = dummy.abc();
C++ 允许使用实例方法的语法调用静态方法。
在文件xyz.h
非常简单且几乎不依赖于其他的特殊情况下,您可以这样做:
namespace othername {
#include "xyz.h"
}
,然后使用
othername::xyz::abc();
namespace hack = xyz;
hack::abc();
相关文章:
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- C++ |匿名命名空间与命名空间 std 冲突
- 分解SWIG Python接口 - 容器会产生命名空间冲突
- 如何解决两个不使用命名空间的第三方库之间的类名冲突?
- 调用 ADL 时,表达式和命名空间之间是否会发生冲突
- 类名和枚举值之间的冲突:无需命名空间即可解析
- C++当命名空间、类名和命名空间::类名冲突时该怎么办
- C++ 中的命名空间冲突
- 避免与具有相同名称的两个类发生命名空间冲突
- 命名与多个命名空间冲突
- 命名空间中的类名冲突
- ctime std::命名空间冲突
- 如何避免 C 和 C++ 中的命名空间冲突
- C++ 当命名空间发生冲突时,为什么结构/类不与变量和函数发生冲突?
- 我收到void main()和使用命名空间std;之间的冲突;?我正在使用代码块
- 全局作用域枚举和命名空间冲突
- 如何解决c++中的命名空间冲突?
- 不明确的引用和命名空间(来自两个外部库的定义冲突)
- 命名空间,类成员ADL冲突
- 在c++中命名命名空间的最佳方法//当名称冲突时该怎么做