【问题标题】:C++ "::" without class name [duplicate]C ++“::”没有类名[重复]
【发布时间】:2015-09-25 11:32:39
【问题描述】:

我在 C++ 中遇到了以下代码结构:

uint32_t AClass::Action(....)
{
..
      status = ::Action(...);
..
}

我不确定::Action() 是什么意思。它属于哪个类?注意:::Action(...) 的参数列表与AClass::Action(...) 不同。

【问题讨论】:

    标签: c++ namespaces scope scope-resolution


    【解决方案1】:

    前面的::只是表示这里的Action指的是全局命名空间中的一个非成员函数,而不是指当前命名空间中的AClass::Action

    【讨论】:

    • 我如何找出根命名空间在哪里?
    • @dannycrane 我想根命名空间也可以称为“默认”命名空间。任何不在显式 namespace 块中的代码都在根命名空间中。所有其他命名空间本质上都在根命名空间“内部”。
    • @RedRoboHood 如果你能区分根命名空间和全局范围就好了
    • @StraightLine 它们或多或少可以互换。如果您特别感兴趣,可以找到更多信息here
    • 有“全局命名空间”之类的东西。没有“根命名空间”之类的东西。
    【解决方案2】:

    ::Action() 表示它是全局命名空间下的一个函数。

    【讨论】:

    • 这是错误的。匿名命名空间是通过将代码包装在 namespace { /* ... */ } 块中创建的,而不是通过使用领先的 :: 运算符。
    • 你是对的我错了
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多