これが私の言いたいことです、
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の2つの実装を次に示します。私はそれがどのように機能するのかわかりませんが、それは機能します。
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ではありませんが、コンパイラーはそれを1つとして受け入れます。ポッドをお互いにキャストすることが実際のものであることを本当に望んでいました。