Подтвердить что ты не робот

Как я могу ссылаться на текущее пространство имен при объявлении его? Есть ли какое-нибудь слово типа "я" /"this"?

Здесь, если я переименую пространство имен, я также должен запомнить остальную часть кода и внести все необходимые изменения. Есть ли какое-либо слово типа self, this или current для ссылки на текущее пространство имен?

namespace myNamespace {
  int myInt;
  void myFunc() {
    myNamespace::myInt = 66;
  }
};
4b9b3361

Ответ 1

Почему вы заявляете свое текущее пространство имен? для этого нет необходимости, вы можете легко написать:

namespace myNamespace {
  int myInt = 33;
  void myFunc() {
    myInt = 33;
  }
};

Независимо от того, какие переменные объявлены там (например, глобальные myInt), переменные этой области будут использоваться по умолчанию.

Однако, если вы хотите переименовать, вы можете использовать методы IDE, такие как замена или рефакторинг.

Ответ 2

Нет, нет, но если вы действительно хотите сделать что-то подобное, вы можете подделать его.

namespace myNamespace {
  namespace _ns = ::myNamespace;
  int myInt;
  void myFunc() {
    _ns::myInt = 66;
  }
}

Если вы измените myNamespace, вам нужно только изменить _ns, чтобы он соответствовал.

Кроме того, точка с запятой, следующая за пространством имен, является излишней.

Ответ 3

Хороший вопрос. Нет, ничего подобного нет.

Кроме того, обратите внимание, что myNamespace::myInt даже не однозначно в случае вложенных пространств имен (скажем, у вас есть свернутый случай namespace myNamespace { namespace myNamespace { … } }). Чтобы быть в безопасности, вам нужно использовать полное пространство имен:

::myNamespace::myInt = 33;

Если префикс :: относится к глобальному пространству имен.