C++ 这个嵌套的命名空间定义做什么?
我甚至不知道如何搜索它,但我试图测试它,仍然无法理解它。下面的代码是什么意思:C++ 这个嵌套的命名空间定义做什么?,c++,C++,我甚至不知道如何搜索它,但我试图测试它,仍然无法理解它。下面的代码是什么意思: boost::asio::io_service::id service::id; 从以下位置获取::是范围解析运算符。左侧的名称表示范围;它可以是命名空间名称或类名。右侧的名称表示该范围的成员 在您的例子中,似乎有一个类maidsafe::crux::detail::service,它包含类型为boost::asio::io_service::id的静态成员id。在许多情况下,静态成员需要类外定义,这是由您发布的代
boost::asio::io_service::id service::id;
从以下位置获取:
:
是范围解析运算符。左侧的名称表示范围;它可以是命名空间名称或类名。右侧的名称表示该范围的成员
在您的例子中,似乎有一个类maidsafe::crux::detail::service
,它包含类型为boost::asio::io_service::id
的静态成员id
。在许多情况下,静态成员需要类外定义,这是由您发布的代码提供的
它可以作为任何其他C++声明解析:它声明了名为“代码>服务::ID <代码>类型>代码> Boo::Asio::IOIGoService::ID<代码>。让我们看看各个组件
类型:
是一个名称空间(在全局范围内)boost
是asio
boost
是内部的命名空间或类io\u服务
boost::asio
是id
boost::asio::io\u服务中的一种类型
是一个类名(可能在命名空间service
中)maidsafe::crux::detail
是id
中的静态成员maidsafe::crux::detail::service
附录
虽然在这个问题中没有出现,但在更现代的C++代码中有时会遇到一个相关的语法:
namespace maidsafe::rux::detail
{
boost::asio::io_service::id service::id;
}
这在C++17中作为在一行上打开多个名称空间的简写介绍。它与问题中的代码完全相同。
::
是范围解析运算符。左侧的名称表示范围;它可以是命名空间名称或类名。右侧的名称表示该范围的成员
在您的例子中,似乎有一个类maidsafe::crux::detail::service
,它包含类型为boost::asio::io_service::id
的静态成员id
。在许多情况下,静态成员需要类外定义,这是由您发布的代码提供的
它可以作为任何其他C++声明解析:它声明了名为“代码>服务::ID <代码>类型>代码> Boo::Asio::IOIGoService::ID<代码>。让我们看看各个组件
类型:
是一个名称空间(在全局范围内)boost
是asio
boost
是内部的命名空间或类io\u服务
boost::asio
是id
boost::asio::io\u服务中的一种类型
是一个类名(可能在命名空间service
中)maidsafe::crux::detail
是id
中的静态成员maidsafe::crux::detail::service
附录
虽然在这个问题中没有出现,但在更现代的C++代码中有时会遇到一个相关的语法:
namespace maidsafe::rux::detail
{
boost::asio::io_service::id service::id;
}
这在C++17中作为在一行上打开多个名称空间的简写介绍。它与问题中的代码完全相同。可能是一个不错的问题的重复,但需要一个更好的标题来阻止否决票,尽管我想不出一个。也许这个嵌套的名称空间定义有什么作用?@acraig5075可能工作得更好。我将更改标题。谢谢。可能是一个不错的问题的重复,但需要一个更好的标题来阻止落选,尽管我想不出一个。也许这个嵌套的名称空间定义有什么作用?@acraig5075可能工作得更好。我将更改标题。谢谢。
服务
可能是一个名称空间,可以存在于:
,::maidsafe
,::maidsafe::run
或::maidsafe::run::detail
中的任何一个中。你可能是对的however@Caleth的确或者它可以是您提到的任何名称空间中的一个类。但我觉得这是不可能的,而且这个问题的级别并不意味着需要超精确的、不太可能的、可能会分散注意力的细节。@Angew同意你的推理,否则,我将在这里抛出一些对限定名称和限定id的引用。服务
可能是一个命名空间,并且可以存在于任何:
,::maidsafe
,::maidsafe::run
或::maidsafe::run::detail
。你可能是对的however@Caleth的确或者它可以是您提到的任何名称空间中的一个类。但我觉得这是不可能的,而且这个问题的级别并不意味着需要超精确、不太可能、可能会分散注意力的细节。@Angew同意你的推理,否则,我将在这里引用限定名称和限定id。