我什至不知道如何搜索它,但我尝试对其进行测试,但仍然无法理解。下面的代码是什么意思:
boost::asio::io_service::id service::id;
最佳答案
::
是范围解析运算符。左侧的名称表示范围;它可以是命名空间名称或类名称。右侧的名称表示该范围的成员。
在你的例子中,似乎有一个类 maidsafe::crux::detail::service
,它包含一个类型为 boost 的静态成员
。在许多情况下,静态成员需要类外定义,您发布的代码提供了这一定义。id
::asio::io_service::id
它可以像任何其他 C++ 声明一样被解析:它声明了一个名为 service::id
的东西,类型为 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;
}
这是在 C++17 中引入的,作为在一行中打开多个命名空间的简写。它与问题中的代码完全相同。
关于c++ - 这个嵌套的命名空间定义有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037107/