Здесь стоит упомянуть ИМО, что, хотя исходный вопрос (и отличные ответы), безусловно, полезен, если вы хотите переименовать функцию (для этого есть веские причины!), Если все, что вы хотите сделать, это удалить глубокое пространство имен, но сохраните имя, для этого есть ключевое слово 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, иначе вы загрязните глобальное пространство имен.
Это не то же самое, что «переименование» выше, но часто это то, что действительно нужно.
person
Kevin Anderson
schedule
04.01.2019
void (&NewName)(some_vector&, float, float, float, float) = OldName;
в моем следующем заезде. - person Agnel Kurian   schedule 16.06.2010printf
здесь. Это был только пример. Проблема здесь больше связана с ограничениями английского языка, чем с чем-либо еще. У меня есть одна функция, служащая цели А и цели Б, но я просто не могу найти здесь одно имя, служащее обеим целям. - person Agnel Kurian   schedule 16.06.2010T &a = b;
создает новое имя дляb
.typedef
для типов иnamespace A=B;
для пространств имен. - person Agnel Kurian   schedule 17.06.2010static
илиextern
(в последнем случае с соответствующим определением в исходном файле) - иначе вы можете получить множественную ошибку определения. Упомянул об этом только потому, что мы обсуждаем псевдонимы (их обычно можно использовать в заголовках) в этом вопросе. - person avtomaton   schedule 21.11.2015using BaseClass::BaseClassMethod
, и естьusing AliasType = Type;
, и есть дажеnamespace AliasNamespace = Namespace;
. Чего нам не хватает, так этоusing AliasFunction = Function;
- person anton_rh   schedule 01.03.2018