Пространство имен + перегруженный оператор std :: ostream <<

Я пытаюсь создать класс Vector3D в своем приложении на C ++. Для всей моей программы я использую пространство имен. В этом пространстве имен я объявил свой класс Vector3D и перегруженный оператор << для него как такового:

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);

, что очень неудобно. Я хотел бы попытаться избежать «использования пространства пространства имен», потому что мне нравится префикс на всех остальных объектах в «пространстве пространства имен».

Мой последний вопрос: есть ли способ вызвать перегруженную операторную функцию внутри пространства имен без использования этого пространства имен?

Спасибо за помощь.

5
задан lowq 7 October 2011 в 22:41
поделиться