Actualmente estoy trabajando en un "motor" de juegos que necesita mover valores entre un motor 3D, un motor de física y un lenguaje de scripting. Como necesito aplicar vectores del motor de física a objetos 3D muy a menudo y quiero controlar tanto el 3D como los objetos físicos a través del sistema de scripting, necesito un mecanismo para convertir un vector de un tipo (por ejemplo, vector3d<float>
) a un vector del otro tipo (por ejemplo, btVector3
). Desafortunadamente no puedo hacer suposiciones sobre cómo se estructuran las clases/estructuras, por lo que un simple reinterpret_cast
probablemente no funcionará.Funciones de conversión no miembro; Casting de diferentes tipos, p. Vector DirectX para vector OpenGL
Entonces la pregunta es: ¿Hay algún tipo de 'estática' Método/no miembro de fundición para lograr básicamente esto:
vector3d<float> operator vector3d<float>(btVector3 vector) {
// convert and return
}
btVector3 operator btVector3(vector3d<float> vector) {
// convert and return
}
En este momento esto no va a compilar ya que los operadores tienen que ser de fundición métodos miembros . (error C2801: 'operator foo' must be a non-static member
)
Gracias Adam! Esto es lo que hago ahora. Me pregunto si es posible hacer que el compilador haga el trabajo. Algo así como "si quieres ir allí, ve allí primero". – sunside
Entiendo. Aunque esta solución me parece más directa, agregué otra posibilidad en otra respuesta. –
Ir con funciones gratuitas. Las conversiones implícitas generalmente son un mal camino, incluso cuando son posibles. – jalf