我需要帮助在C++中向向量添加数组

kre*_*rej 6 c++ arrays opengl vector

我正在跟随OpenGL超级圣经第5版,他们定义了一个矢量(矢量和数学一样)

typedef float   M3DVector3f[3];
Run Code Online (Sandbox Code Playgroud)

我正在尝试将这个实例添加到std :: vector(c ++中的'可调整大小的数组'),但是我不断收到错误说:

array initialization needs curly braces
Run Code Online (Sandbox Code Playgroud)

完全错误

我定义std :: vector的方式以及我添加它的方式是:

std::vector<M3DVector3f> vertices;

float vertex[3];
sscanf_s(line.c_str(), "%*s %f %f %f", &vertex[0], &vertex[1], &vertex[2]);

M3DVector3f v = {vertex[0], vertex[1], vertex[3]};

vertices.push_back(v);
Run Code Online (Sandbox Code Playgroud)

我已经收集到了问题是vertices.push_back(v)调用,因为当我发表评论时我没有收到错误.有人可以向我解释并帮助我找出为什么它不会让我将这个向量添加到我的向量中?

GMa*_*ckG 4

数组不能(直接)复制或分配,标准容器要求类型可复制和分配。

但是,您可以(并且可能应该)这样做:

struct M3DVector3f // a basic vector class
{
    float x;
    float y;
    float z;
};
Run Code Online (Sandbox Code Playgroud)

可复制的并且同样可用。