Let's say I have a class called 'foo' in namespace "abc"...
namespace abc {
class foo {
int a;
int b;
};
}
...and then say I have another class called "abc" in a different namespace
#include "foo.h"
namespace foo {
class abc {
abc::a = 10;
};
}
abc::a would not be a defined type, because it would be searching class abc, not namespace abc. How would I go about properlly referencing an object in another namespace, wherein that other namespace had the same name as the class I'm in?
You can use ::abc::xx
, that is, identify the variable or type as its absolute namespace path. If you don't specify an absolute name, relative names start going upwards in the including namespaces/classes.
You can use a prefix ::
to denote starting from the global namespace, so in your case ::abc
would denote the abc
namespace from your first code snippet.
You can specify a fully qualified name starting from ::
which defines the global namespace, e.g.:
namespace abc {
class foo {
int a;
int b;
};
}
namespace foo {
class abc {
::abc::foo a; // Changed from 'abc::a = 10;' since it doesn't compile
};
}