例如,我有一个QMatrix4x4,我有一个Ogre :: Matrix4。
从QMatrix转换到Ogre :: Matrix4有点单调乏味,我想知道是否有任何可靠的解决方案?
现在我只是在for循环中复制每个元素,有什么建议吗?
答案 0 :(得分:1)
在C ++ 11中,如果两种类型都是布局兼容,则它们之间只能reinterpret_cast
。例如:
#include <cassert>
struct X{
int a, b, c, d;
};
struct Y{
int arr[4];
};
int main(){
X x{0, 1, 2, 3};
Y& y = reinterpret_cast<Y&>(x);
assert(y.arr[2] == 2);
}
(我希望我的例子正确; live on Ideone。)
这种方法的问题在于你需要深入研究实现的内部结构,即使在不同的版本中也可能不稳定。因此,简单地复制可能是最好的(如在大多数便携/已知/固体中)。
但有一件事:我个人不知道有问题的类型提供哪些接口,Ogre也可能提供不直接在Matrix4
上运行但在(2D)阵列上运算的算法。查看API文档。