Я ожидал, что смогу использовать псевдоним пространства имен в объявлении класса, но получаю синтаксическую ошибку компилятора.
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);
}
Есть ли способ сделать то, что я хочу?
РЕДАКТИРОВАТЬ: мое решение
Я обнаружил, чтоМне не нужно безымянное пространство имен для моей конкретной проблемы, и я могу просто сделать это:
namespace myspace
{
namespace abc = a_big_namespace;
struct MyClass
{
void fn(abc::testType tt) {
abc::test(tt);
}
};
}
Чтобы переключиться на другую библиотеку, к которой относится мое пространство имен псевдонимов, я просто изменяю псевдоним.Этот метод даже позволяет мне иметь один и тот же класс в одном файле дважды, каждый раз ссылаясь на другую библиотеку.Спасибо за вашу помощь.