Есть ли более короткий способ переадресации объявления класса в пространстве имен?

StackOverflow https://stackoverflow.com/questions/1368642

Вопрос

Я могу переслать объявление функции в пространстве имен, выполнив следующие действия:

void myNamespace::doThing();

что эквивалентно:

namespace myNamespace
{
  void doThing();
}

Чтобы переслать объявление класса в пространстве имен:

namespace myNamespace
{
  class myClass;
}

Есть ли более короткий способ сделать это?Я думал что-то вроде:

class myNamespace::myClass;
Это было полезно?

Решение

Нет, однако с небольшим переформатированием

namespace myNamespace { class myClass; }

не намного хуже, чем

class myNamespace::myClass;

Другие советы

Я раньше хотел сделать то же самое — это запрещено.Член пространства имен должен быть объявлен в namespace-body.На них можно «ссылаться» только с помощью оператора разрешения области.

См. 3.3.5 «Область пространства имен» в стандарте.

Сущности, объявленные в теле пространства имен, называются членами пространства имен, а имена, введенные этими объявлениями в декларативную область пространства имен, называются именами членов пространства имен.

и

На член пространства имен также можно ссылаться после ::оператор разрешения области (5.1), применяемый к имени его пространства имен или имени пространства имен, которое номинирует пространство имен члена в директиве using;

Я так не думаю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top