Ash*_*iya 0 c++ memory pointers stl vector
我有这样的结构:
struct Rz3DContourNode {
float x;
float y;
float z;
float nx;
float ny;
float nz;
};
Run Code Online (Sandbox Code Playgroud)
我将元素存储在STL向量中,如下所示:
std::vector < Rz3DContourNode > nodes;
Run Code Online (Sandbox Code Playgroud)
现在我想更改vector中节点的nx,ny compoent.我尝试如下:
*(&nodes[i].nx)=newNXValue;
*(&nodes[i].ny)=newNYValue;
*(&nodes[i].nz)=newNZValue;
Run Code Online (Sandbox Code Playgroud)
这不起作用.是因为nodes [i]返回对象的副本?
使用指针有什么解决方案吗?
我不能使用指针(Rz3DContourNode*),因为我在OpenGL中使用此向量作为
glNormalPointer(GL_FLOAT,sizeof(Rz3DContourNode), &nodes[0].nx);
Run Code Online (Sandbox Code Playgroud)
编辑 - 对不起.我实际上每次都保留一个QList并获取std :: vector.这就是原因
std::vector<Rz3DContourNode> nodeVector = nodes.toVector().toStdVector();
Run Code Online (Sandbox Code Playgroud)
Cha*_*esB 11
为什么要用指针打扰?该[]
操作符返回引用存储的对象,这样你就可以这样做
nodes[i].nx = newNXValue;
nodes[i].ny = newNYValue;
nodes[i].nz = newNZValue;
Run Code Online (Sandbox Code Playgroud)