c ++命名空间是否有类似".."?
Is there analog of ".." for c++ namespaces?
你好,我的代码中有以下结构:
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
,或者将整个文件放入某个外部名称空间
是否有一种方法可以访问x属性,使用相对路径,而不是绝对路径?
封闭作用域/命名空间中的符号可以在当前作用域/命名空间中访问。
ns::A::Impl::x
可以缩短为A::Impl::x
(不能省略A::
,因为你有两个Impl
)。
没有与".."等价的,即指定"封闭的命名空间/类"的方法,但您可以手动实现类似的事情:
class B
{
typedef A parent; // <---- add this
// ...
printf("%d", parent::Impl::x);
在这种特殊情况下,它没有获得任何东西:这只是Maxim建议的A::Impl::x
的一种更迂回的方式。但一般来说,如果你有一个更复杂的层次结构,那么这个表单可能会给你带来一些可读性。
相关文章:
- 是否可以将函数导入命名空间,但不能导出它?
- VS2017 是否更改了 C++ 中访问 C# 命名空间的方式?
- C++ - 是否将常量幻数放入命名空间
- 初始化命名空间中的变量是否类似于将它们初始化为类成员?
- 是否将命名空间范围文件本地 (.cpp) 常量放在匿名命名空间中
- c++ 内联友元函数是否会导致命名空间之间的名称隐藏?
- 将以"_[a-z0-9]"开头和"using"的标识符导入全局命名空间是否定义良
- 是否可以在相同的命名空间中,但在不同的嵌套项目中定义具有相同名称的类
- 是否可以在 c ++ 中查看命名空间的所有内容?
- 是否有 GCC 警告,用于使用 C 库中的符号而不是通过命名空间 std?
- 是否有一个很好的方法可以在C 11中打印出像JSON一样的Trie结构(仅迭代解决方案)的扁平命名空间
- 使用显式命名空间限定符时模板实例化行为是否发生变化?
- 调用 ADL 时,表达式和命名空间之间是否会发生冲突
- winrt 命名空间是否具有控制台函数?
- 一个命名空间是否可以是另一个命名空间的成员
- 命名空间是否可以用作C++中的对象模板
- 在匿名命名空间中使用命名空间是否安全
- 隐藏第三方命名空间是否危险
- C++:当前命名空间是否覆盖其他命名空间
- c ++命名空间是否有类似".."?