您好,我的代码中有以下结构:
namespace ns
{
class A
{
public:
class Impl
{
public: static int x;
};
class B
{
public:
class Impl
{
public:
Impl(){printf("%d", ns::A::Impl::x);}
};
};
};
}
有没有办法使用相对路径而不是绝对路径来访问该 x 属性?
这会更方便,因为有一天我可以将命名空间名称从
ns
更改为例如other
,或者将整个文件放入某个外部命名空间中。 最佳答案
没有等效的“..”,即一种指定“封闭命名空间/类”的方法,但您可以手动实现类似的东西:
class B
{
typedef A parent; // <---- add this
// ...
printf("%d", parent::Impl::x);
在这种特殊情况下,它什么也得不到:这只是一种更迂回的方式,如 Maxim 所建议的那样使用
A::Impl::x
。但总的来说,如果你有一个更复杂的层次结构,那么这种形式可能会给你一些可读性。关于c++ - c++ 命名空间是否有 ".."的类似物?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23801909/