这就是我的意思
class V3
{
public:
float x,y,z;
};
class V3_
{
public:
float x,y,z;
};
V3_ vec1;
V3 vec2 = static_cast<V3_>(vec1);
我应该怎么做才能使这个演员在编译时工作?
谢谢。
编辑:
似乎对我想要做什么有一些误解。我可以为转换编写一个运算符,但我希望它在编译时完成。
这里有两个允许 static_cast 的 Vector3 实现。我不知道它是如何工作的,但它确实有效。
http://www.ogre3d.org/docs/api/html/OgreVector3_8h_source.html
http://harry-3d-engine.googlecode.com/svn/trunk/NxOgreVec3.h
我可以做这个演员
void DynamicBody::SetLinearMomentum(const Vector3& vel)
{
body->setLinearMomentum(static_cast<NxOgre::Vec3>(vel));
}
我想解释一下我该如何做到这一点。
编辑:
经过进一步调查,我发现它实际上是如何做到的,它调用
template<class user_xyz_vector_type>
inline user_xyz_vector_type as() const { ... }
这不是一个实际的 static_cast,但编译器接受它作为一个。我真的希望互相投豆荚是一件真实的事情。