Ответ 1
Начните с "::"
Например
class criterion : public ::criterion {};
У меня есть сценарий следующего вида:
class criterion
{
// stuff about criteria...
};
namespace hex {
class criterion : public criterion //does not compile
{ //This should inherit from the
//A hex specific criterion //criterion class in the global namespace
};
};
Мой вопрос: как наследуется от класса в namspace, который является родителем другого пространства имен?
Billy3
Начните с "::"
Например
class criterion : public ::criterion {};
Вам нужно указать пространство имен, в этом случае глобальное:
class criterion : public ::criterion
Обратите внимание, что С++ не указывает никаких средств навигации по пространствам имен, как если бы они были деревом. Например, вы не можете указать "родительское" пространство имен, используя ".." или любую другую стенографию - вы должны использовать свое имя.
Этот компилятор для меня, в основном просто явно показывает, в каком пространстве имен находится родительский класс:
class A
{};
namespace B {
class A : public ::A
{};
namespace C {
class A : public B::A
{};
}
};
Упрощенные основные правила пространства имен С++: