我有结构:

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个浮点数。

07-24 19:37