我有结构:
struct mat4 {
float m[16];
mat4();
...
float *getFloat();
}
float *mat4::getFloat() {
return m;
}
现在我想从新创建的矩阵r使m等于m:
void mat4::rotate(vec3 v) {
mat4 r, rx, ry, rz;
...
matrix calculations
...
m = *r.getFloat();
}
但这给了我错误“将'float'分配给'float [16]'的类型不兼容”
我搜索过Google,并尝试了不同的方法,但到目前为止没有成功。
请告诉我该怎么做?
最佳答案
r.getFloat()
返回一个指向单个浮点数的指针。将其取消引用以提供单个浮点数,然后将其分配给16个浮点数的数组。
假设m
包含mat4
的整个状态,则可以使用内置的赋值运算符:
*this = r;
编译器将自动实现struct dump / memcpy来复制所有16个浮点数。