我甚至不知道如何搜索它,但我试图测试它,仍然无法理解它。下面的代码是什么意思:
boost::asio::io_service::id service::id;
答案 0 :(得分:5)
::
是范围解析运算符。左侧的名称表示范围;它可以是命名空间名称或类名。右侧的名称表示该范围的成员。
在您的情况下,似乎有一个类maidsafe::crux::detail::service
,其中包含id
类型的静态成员boost::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中引入,作为在一行上打开多个名称空间的简写。它完全等同于问题中的代码。