Я немного сбит с толку относительно правильного использования пространств имен C ++. Для меня понятно, как они могут помочь избежать конфликтов (конфликт имен), но больше неясно, когда речь заходит о ключевом слове using
. Я имею в виду, предположим, что у меня есть часть моего кода, которую я помещаю в пространство имен, и создаю класс, скажем
namespace my
{
class vector { ... };
}
Конечно, когда я его использую, я бы не хотел все время печатать my::vector
, поэтому я бы хотел using namespace my
. Однако в конечном итоге мне может понадобиться что-то из пространства имен std
, а затем я хочу одновременно using namespace std
, но это вернет меня к первоначальной проблеме конфликта имен.
Я знаю, что можно "импортировать" только ту функциональность, которая мне нужна, например, using std::set
, но в этом случае вполне естественно импортировать как стандартное пространство имен std
, так и my
пространство имен полностью, как я. буду использовать их все время.
Означает ли это, что даже когда я использую пространства имен, мне все равно следует подумать о присвоении необычных имен моим типам? Или using namespace
является ошибкой, и я всегда должен вместо этого набирать my::vector
? Благодаря.
Ну, я, наверное, должен уточнить, что это больше вопрос читабельности, чем печатать Многие ::
везде выглядят очень странно для меня. Я знаю, что это вопрос вкуса и привычек, но тем не менее.