先頭に二重コロン「::」が付いている意味は何ですか? 質問する

先頭に二重コロン「::」が付いている意味は何ですか? 質問する

クラス内で次のコード行を見つけたので、これを修正する必要があります:

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

また、クラス名の先頭に付けられた二重コロンの意味が正確にはわかりません。それがなければ、次のように読みます:tmpCoクラスのオブジェクトへのポインターとしての宣言Configuration... しかし、先頭に付けられた二重コロンが私を混乱させます。

また、次のことも発見しました:

typedef ::config::set ConfigSet;

ベストアンサー1

これにより、現在いる名前空間からではなく、グローバル名前空間から解決が行われるようになります。たとえば、Configuration次のように呼び出される 2 つの異なるクラスがあるとします。

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

おすすめ記事