Я пытаюсь создать класс Vector3D в своем приложении c ++. Для всей моей программы я использую пространство имен. В этом пространстве имен я объявил мой класс Vector3D и перегруженный оператор << для него следующим образом: </p>
namespace space
{
class Vector3D
{
public:
float x, y, z;
Vector3D(float _x = 0, float _y = 0, float _z = 0);
Vector3D(const Vector3D & _vector);
Vector3D & operator=(const Vector3D & _vector);
Vector3D operator*(float _scalar);
Vector3D operator*(const Vector3D & _vector); //CROSS PRODUCT
float magnitude() const;
float magnitude2() const; //FOR SPEED
Vector3D normalize() const;
};
std::ostream & operator<<(std::ostream &, const Vector3D &);
}
Он тоже отлично компилируется. Моя проблема состоит в том, чтобы поставить Vector3D на место, я должен вручную позвонить
space::operator<<(cout, vector);
это боль. Я хотел бы попытаться избежать «использования пространства имен», потому что мне нравится префикс для всех остальных объектов в «пространстве имен».
Мой последний вопрос: есть ли способ вызвать перегруженную операторную функцию внутри пространства имен без использования этого пространства имен?
Спасибо за помощь.