【问题标题】:c++ What is the difference between namespace and usingc++命名空间和使用有什么区别
【发布时间】:2017-09-20 20:32:11
【问题描述】:

我正在查看两个源代码。一个人使用这个:

using boost::property_tree::ptree;

而另一个使用这个:

namespace ptree = boost::property_tree::ptree;

有什么区别?

【问题讨论】:

  • 我实际上不知道你为什么被否决。这是一个半体面的,明确的问题
  • @AlgirdasPreidžius - 在确定“缺乏研究”时,您是否想出了可能的重复项?
  • @AlgirdasPreidžius - 我认为,因为 SO 被设计为编程问题的问答网站。如果一个问题以前没有被问过,并且被清楚地表达出来,那么它应该被问到。投反对票不是为了惩罚不知道的人,而是为了标记低质量的帖子。
  • @AlgirdasPreidžius - Here's another question "answerable by a C++ book",它实际上是好的和有洞察力的,因此受到高度评价。这里的这个问题有可能帮助未来的读者寻找信息,因此很好。
  • @Theburgerman 我来 SO 是为了获得快速简单的答案,你也是不,我没有。另外,看了几本C++的书,还没有上天堂。

标签: c++


【解决方案1】:

有

using boost::property_tree::ptree;

您将boost::property_tree::ptree 类拉入当前命名空间。从那时起,您可以使用ptree 而不是boost::property_tree::ptree。

有

namespace ptree = boost::property_tree::ptree;

你应该有一个错误,因为boost::property_tree::ptree 是一个类,而不是一个命名空间。否则(如果它是命名空间),它将为命名空间创建一个别名(就像pt 在Boost property tree tutorials 中的使用方式一样)。

【讨论】:

    【解决方案2】:

    using 语句将命名空间带入范围。 namespace 语句定义了一个别名(要使用它,您必须使用 :: 运算符访问它)。

    编辑:请参阅程序员老兄的答案以获取正确答案。

    【讨论】:

    • 在本例中,using 语句不会将命名空间引入作用域,因为 ptree 不是命名空间。
    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 2014-08-10
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2012-01-01
    相关资源
    最近更新 更多