前面的双冒号“::”是什么意思?

2023-12-11

我在一个类中找到了这行代码,我必须修改它:

::Configuration * tmpCo = m_configurationDB;//pointer to current db

我不知道类名前面的双冒号到底意味着什么。没有它我会读:声明tmpCo作为指向该类的对象的指针Configuration...但是前面的双冒号让我感到困惑。

我还发现:

typedef ::config::set ConfigSet;

这确保解析从全局命名空间开始,而不是从您当前所在的命名空间开始。例如,如果您有两个不同的类,称为Configuration像这样:

class Configuration; // class 1, in global namespace
namespace MyApp
{
    class Configuration; // class 2, different from class 1
    function blah()
    {
        // resolves to MyApp::Configuration, class 2
        Configuration::doStuff(...) 
        // resolves to top-level Configuration, class 1
        ::Configuration::doStuff(...)
    }
}

基本上,它允许您遍历全局名称空间,因为您的名称可能会被另一个名称空间内的新定义破坏,在这种情况下MyApp.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前面的双冒号“::”是什么意思? 的相关文章

随机推荐