1. ホーム
  2. c++

[解決済み] ダブルコロン「:」の意味を教えてください。

2022-03-20 19:07:16

質問

私は修正しなければならないクラスの中で、このコードの行を見つけました。

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

で、クラス名の前に付いているダブルコロンの意味がよくわかりません。これがなければ、私は次のように読むだろう。 tmpCo のオブジェクトへのポインタとして使用します。 Configuration ... しかし、先頭にダブルコロンがあるため、混乱します。

も見つけた。

typedef ::config::set ConfigSet;

解決方法は?

これにより、現在いるネームスペースからではなく、グローバルなネームスペースから解決が行われるようになります。たとえば、2 つの異なるクラス 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 .