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

Ozg*_*gci 0 c++

我甚至不知道如何搜索它,但我试图测试它,仍然无法理解它.下面的代码是什么意思:

boost::asio::io_service::id service::id;
Run Code Online (Sandbox Code Playgroud)

来自:GitHub的MaidSafe-CRUX

Rei*_*ica 5

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

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

它可以像任何其他C++声明一样进行解析:它声明了一个名为service::idtype的东西boost::asio::io_service::id.我们来看看各个组件.

类型:

  • boost 是名称空间(在全局范围内)
  • asio 是一个名称空间 boost
  • io_service 是内部的命名空间或类 boost::asio
  • id 是一种类型 boost::asio::io_service

名称:

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

附录

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

namespace maidsafe::rux::detail
{

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

}
Run Code Online (Sandbox Code Playgroud)

这已在C++ 17中引入,作为在一行上打开多个名称空间的简写.它完全等同于问题中的代码.

  • `service`*可能*是一个命名空间,可以存在于`::`,`:: maidsafe`,`:: maidsafe :: run`或`:: maidsafe :: run :: detail`中.但是,你可能是对的 (2认同)