我想将类移动到不同的名称空间,但让用户使用旧的名称空间一段时间(用户将知道它已被弃用)。将类移动到不同的名称空间
我:
namespace vx {
class vec3
{
public:
vec3(double a, double b, double c);
double length();
vec3 operator+(const vec3& rhs) const;
};
}
现在我有:
namespace vx
{
class vec3
{
public:
vec3(double a, double b, double c) : v(a, b, c) {}
vec3(Math::vec3 iVec) : v(iVec) {}
Math::vec3 operator=(const Math::vec3& iVec);
operator Math::vec3() { return v; }
operator Math::vec3() const { return v; }
private:
Math::vec3 v;
};
}
namespace Math {
class vec3
{
public:
vec3(double a, double b, double c);
double length();
};
}
Math::vec3 operator+(const Math::vec3& lhs, const Math::vec3& rhs);
通过转换一元operator-(const vec3&) const
二进制Math::operator-(const Math::vec3&, const Math::vec3&);
我定了很多的问题,但是现在我仍然有问题,数学: :vec :: length()
在一些旧的代码中,我有
...
vx::vec3 v(1,2,3);
double l = vec3.length(); // The implicit conversion doesn't work here!
我该如何实现目标?
你可以添加到'VX :: vec3':'双长度( )const {return v.length(); }'.... –
'Math :: vec3'倾向于固定版本的'vx :: vec3'或者2个类是否相同? – Jarod42
我们想把整个类vec3移动到新的名字空间。弃用的类可以是一个存根,可以在不修改的情况下编译旧的代码。 – papaDoc