Если в C++ у меня есть класс longUnderstandableName
. Для этого класса у меня есть заголовочный файл, содержащий его объявление метода. В исходном файле для класса, я должен написать longUnderstandableName::MethodA
, longUnderstandableName::MethodB
и так далее, везде.C++: «Пространства имен классов»?
Могу ли я каким-то образом использовать пространства имен или что-то еще, поэтому я могу просто написать MethodA
и MethodB
в исходном файле класса и только там?
На данный момент ответ отрицательный. ** Но ** ... Существует [предложение добавить ** 'namespace class' ** к языку] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/ 2016/p0223r0.html), что позволит точно определить, что вы и я хотим: разрешить определение уже объявленных членов класса в блоке, который автоматически откроет их для класса, - и, таким образом, избежать постоянного повторного набора пространства имен классов, шаблона аргументы и т. д. Это странно, что это взято до сих пор, и это все еще только в стадии предложения, но мы здесь. Вздох! Я действительно надеюсь, что это превратит его в C++ 20 или что-то еще. –
@underscore_d К сожалению, это предложение не включает эквивалент 'using class', поэтому он еще не обеспечивает полную гибкость. – negamartin
@negamartin Что еще вы ищете? Просьба привести пример. Главное, что 'namespace class' разрешит это повторение для автора класса, который является перспективой, с которой OP задавал этот вопрос. Тем временем пользователи класса могут делать что-то вроде 'using tiny_type = SomeNamespace :: SomeOtherNamespace :: AHugeClassName;'. Что еще вы хотите? –