将'float'赋值给'float [16]'的不兼容类型

Kar*_*tal 2 c++ arrays floating-point struct

我有结构:

struct mat4 {
    float m[16];
    mat4();
    ...
    float *getFloat();
}

float *mat4::getFloat() {
    return m;
}
Run Code Online (Sandbox Code Playgroud)

现在我想从新创建的矩阵r中使m等于m:

void mat4::rotate(vec3 v) {
    mat4 r, rx, ry, rz;
    ...
    matrix calculations
    ...
    m = *r.getFloat();
}
Run Code Online (Sandbox Code Playgroud)

但这给了我错误"将'浮动'分配给'浮动[16]'的不兼容类型"我搜索谷歌并尝试了不同的方法但到目前为止没有成功.请告诉我怎么办?

Fle*_*exo 6

getFloat()返回一个指针.m是一个数组.如果要复制所有返回的内容m,则需要使用std::copystd::memcpy:

std::memcpy(m, r.getFloat(), sizeof(m));
Run Code Online (Sandbox Code Playgroud)

如果你想从getFloat()你那里得到一个漂浮物可以做到:

  • m[0] = *r.getFloat();