Долгое время на начальном этапе разработки игрового движка у меня была тенденция использовать следующую директиву в C++
использование пространства имен std;
Директива using делает методы из пространства имен std доступными, как если бы они были локальными по области действия. Так, например, вместо того, чтобы писать следующее:
std::vector‹int› myNumber;
Вы можете просто написать это как:
вектор‹int› мойЧисло;
Это было очень удобно, так как мне не нужно было указывать std:: каждый раз, когда я хотел использовать операцию из библиотеки.
Однако оказывается, что использование использования пространства имен std в вашем движке совсем не лучшая идея. Вместо использования приведенной выше директивы вы должны напрямую ссылаться на пространство имен, как показано ниже:
std::cout<<"hello there"<<std::endl; std::string myName="harold"; std::vector<float> myFloat=1.3; void calculate(std::vector<float> uV);
Я знаю, что писать std каждый раз утомительно, но вам нужно преодолеть это и начать ссылаться на пространство имен.
Пространства имен в основном используются для организации более крупных программных компонентов, например, в игровом движке. Поэтому обязательно используйте их все в своем двигателе. Например, предположим, что ваш движок будет использовать пространство имен MyEngine, а затем, когда вы создаете класс, поместите этот класс в пространство имен, как показано ниже:
//In header file namespace MyEngine{ class Point{ //… void coordinates(); } } //In implementation file namespace MyEngine{ void Point::coordinates(){ //… } } //so if you want to call the class, reference its namespace void main(){ MyEngine::Point* myPoint=new Point(); myPoint->coordinates(); }
Это предотвратит любые конфликты с любой другой библиотекой, которая может использовать те же имена.