Nested NameSpaces in C++

It depends on the namespace you already are:

If you’re in no namespace or another, unrelated namespace, then you have to specify to whole path ABC::XYZ::ClassA.

If you’re in ABC you can skip the ABC and just write XYZ::ClassA.

Also, worth mentioning that if you want to refer to a function which is not in a namespace (or the “root” namespace), you can prefix it by :::

Example:

int foo() { return 1; }

namespace ABC
{
  double foo() { return 2.0; }

  void bar()
  {
    foo(); //calls the double version
    ::foo(); //calls the int version
  }
}

Leave a Comment