我正在尝试在我的 c++ 应用程序中创建一个 Vector3D 类。对于我的整个程序,我使用的是命名空间。在这个命名空间中,我已经为它声明了我的 Vector3D 类和一个重载的 operator<<:
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);
这是一种痛苦。我想尽量避免“使用命名空间空间”,因为我喜欢“命名空间空间”中所有其他对象的前缀。
我的最后一个问题:有没有办法在不使用该命名空间的情况下调用命名空间内的重载运算符函数?
谢谢您的帮助。