Я ожидал, что смогу использовать псевдоним пространства имен в объявлении класса, но получить синтаксическую ошибку компилятора.
struct MyClass
{
namespace abc = a_big_namespace;
void fn() {
abc::test();
}
};
Единственный способ заставить его работать - поставить псевдоним в каждую функцию.
void fn() {
namespace abc = a_big_namespace;
abc::test();
}
Кроме того, я хотел бы иметь возможность использовать псевдоним для параметров функции. Я не нашел для этого работы.
void fn(abc::testType tt) {
abc::test(tt);
}
Есть ли способ сделать то, что я хочу?
EDIT: мое решение
Я обнаружил, что мне не нужно безымянное пространство имен для моей конкретной проблемы и могу просто сделать это:
namespace myspace
{
namespace abc = a_big_namespace;
struct MyClass
{
void fn(abc::testType tt) {
abc::test(tt);
}
};
}
Чтобы переключиться на другую библиотеку, к которой относится мое пространство имен псевдонимов, я просто изменяю псевдоним. Этот метод даже позволяет мне иметь один и тот же класс в одном файле дважды, каждый раз ссылаясь на другую библиотеку. Спасибо за вашу помощь.