c++ - 这个嵌套的命名空间定义有什么作用?

标签 c++

我什至不知道如何搜索它,但我尝试对其进行测试,但仍然无法理解。下面的代码是什么意思:

boost::asio::io_service::id service::id;

来自:MaidSafe-CRUX at GitHub

最佳答案

:: 是范围解析运算符。左侧的名称表示范围;它可以是命名空间名称或类名称。右侧的名称表示该范围的成员。

在你的例子中,似乎有一个类 maidsafe::crux::detail::service,它包含一个类型为 boost 的静态成员 id::asio::io_service::id。在许多情况下,静态成员需要类外定义,您发布的代码提供了这一定义。

它可以像任何其他 C++ 声明一样被解析:它声明了一个名为 service::id 的东西,类型为 boost::asio::io_service::id。让我们看看各个组件。

类型:

  • boost 是一个命名空间(在全局范围内)
  • asioboost
  • 中的命名空间
  • io_serviceboost::asio
  • 中的命名空间或类
  • idboost::asio::io_service
  • 中的一个类型

姓名:

  • service 是一个类名(可能在命名空间 maidsafe::crux::detail 内)
  • idmaidsafe::crux::detail::service 中的静态成员。

附录

虽然它没有出现在这个问题中,但您有时可能会在更现代的 C++ 代码中遇到相关语法:

namespace maidsafe::rux::detail
{

boost::asio::io_service::id service::id;

}

这是在 C++17 中引入的,作为在一行中打开多个命名空间的简写。它与问题中的代码完全相同。

关于c++ - 这个嵌套的命名空间定义有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037107/

相关文章:

c++ - using 语句可以出现在构造函数初始化列表中吗?

c++ - 仅处理整数和 float 时获取 NAN

C++ 函数指针转换

c++ - QT 甚至在 waitForConnected 运行时进行处理

c++ - C++ 中有 __CLASS__ 宏吗?

c++ - 快速线性转换为 sRGB

c++ - 为什么 std::uniform_int_distribution<IntType>::operator() 不是 const?

c++ - 为什么这些 vector 不相等?

c++ - 无法调用 std::function

c++ - 从Qt上的选定区域(QRubberBand)截图