В настоящее время я работаю над игровым движком, который должен перемещать значения между движком 3D, физическим движком и языком сценариев. Поскольку мне очень часто нужно применять векторы из физического движка к 3D-объектам и вы хотите иметь возможность управлять как трехмерным, так и физическим объектом через систему сценариев, мне нужен механизм для преобразования вектора одного типа (например, vector3d<float>
) к вектору другого типа (например, btVector3
). К сожалению, я не могу сделать никаких предположений о том, как выкладываются классы/структуры, поэтому простой reinterpret_cast
, вероятно, не будет делать.
Итак, вопрос: есть ли какой-то метод статического/не-членного литья для достижения в основном этого:
vector3d<float> operator vector3d<float>(btVector3 vector) {
// convert and return
}
btVector3 operator btVector3(vector3d<float> vector) {
// convert and return
}
В настоящий момент это не будет компилироваться, так как операторы-литейщики должны быть элементами-членами.
(error C2801: 'operator foo' must be a non-static member
)