C++ スコープ解決演算子の使用

C++ において、::(スコープ解決)演算子は、スコープ外の変数名または関数名のグローバル識別子です。

式エバリュエータは、スコープ解決、メンバ、およびメンバポインタ演算子を使用したスコーピング操作をサポートします。スコーピング操作はファイル、名前空間、またはクラス内で、変数や関数の参照に使用できます。

以下に例を示します。

Example 4. demo.cpp

static int FILE_STATIC_VARIABLE = 20;
class OuterClass
{
  public:
  OuterClass(int i)
  {
    value = i;
  }

  class InnerClass
  {
    public:
    int demoFunction()
    {
      return 25;
    }
  };

  void increment()
  {
    value++;
  }
  int value;

};

namespace NAME_SPACE_OUTER
{
  const int TEST_VAR= 20;
  namespace NAME_SPACE_INNER
  {
    const int TEST_VAR= 19;
    int nameSpaceFoo ()
    {
      return 60;
    }
  };
};

int main()
{
  OuterClass oc(14);
  OuterClass *ptr_oc = &oc;

  ptr_oc->increment();
}

このサンプルコードは、以下のいずれかの式を使用して照会することができます。

OuterClass::InnerClass::demoFunction
"demo.c"::FILE_STATIC_VARIABLE
NAME_SPACE_OUTER::TEST_VAR
NAME_SPACE_OUTER::NAME_SPACE_INNER::TEST_VAR

ptr_oc->increment() にブレークポイントを設定してそこまで実行した場合、以下の式を使用してアウタークラスのインスタンスを照会することもできます。

oc.value
ptr_oc->value
Copyright © 2010, 2011 ARM. All rights reserved.ARM DUI 0452FJ
Non-ConfidentialID111611