Стоит упомянуть здесь IMO, что хотя оригинальный вопрос (и отличные ответы) определенно полезны, если вы хотите переименовать функцию (есть веские причины для этого!), Если все, что вы хотите сделать, это удалить глубокое пространство имен, но оставьте имя, для этого есть ключевое слово using
:
namespace deep {
namespace naming {
namespace convention {
void myFunction(int a, char b) {}
}
}
}
int main(void){
// A pain to write it all out every time
deep::naming::convention::myFunction(5, 'c');
// Using keyword can be done this way
using deep::naming::convention::myFunction;
myFunction(5, 'c'); // Same as above
}
Это также имеет то преимущество, что оно ограничено областью действия, хотя вы всегда можете использовать его на верхнем уровне файла. Я часто использую это для cout
и endl
, поэтому мне не нужно вводить ВСЕ std
с классическим using namespace std;
в начале файла, но также полезно, если вы используете что-то вроде std::this_thread::sleep_for()
много в одном файле или функции, но не везде, и не любые другие функции из пространства имен. Как всегда, не рекомендуется использовать его в файлах .h, иначе вы загрязните глобальное пространство имен.
Это не то же самое, что "переименование" выше, но часто это то, что действительно нужно.