Зависит от того, что вы хотите от объема «неиспользования».
Если это область действия (в вашем собственном пространстве имен или даже лучше для функции), вы можете разместить using MyNamespace::some_function;
в своей области.
Если это глобальный охват, то автор исходного заголовка отменил вас - по сути, они получили имя ::some_function
, и они помешали вам использовать его для чего-либо еще. Они не должны были вытащить функцию std
в глобальное пространство имен, но вам просто нужно жить с их ошибкой.
Предполагая, что вы не хотите делать ту же самую ошибку, которую вы сделали, вы хотите, чтобы «unuse» применялся к одному исходному файлу, вы не помещаете его в глобальную область заголовка самостоятельно. В этом случае вы можете#define some_function MyNamespace::some_function
, но я не рекомендую его, потому что читатели/разработчики кода не ожидают, что они понимают, что имя в нижнем регистре фактически является макросом.
Если some_function
является функцией (а не класс, как в названии), и вы дело только с одной перегрузкой (например void some_function()
, то есть еще один уродливый обходной Добавить еще один параметр:.
static void some_function(int) { MyNamespace::some_function(); }
Затем вы можете назвать его и получить версию MyNamespace
. Но если вы наберете дополнительный текст (в данном случае 0
), я должен подумать, что вы можете сделать это и ожидаемым образом: сделайте этот дополнительный текст MyNamespace::
или просто используйте другое имя.
одно слово: рефакторинг – UmNyobe
Нет, нет. И это, дети, вот почему вы не играете в эти трюки в заголовках. –
Просто используйте полное имя другого 'some_function'. Поскольку он добавлен, вы должны быть в состоянии сделать это. –