我很难回复一个矢量对象,所以请指导我。感谢。
我的代码:
struct Vector3D
{
float x, y, z;
};
class Vertex
{
public:
std::vector<Vector3D> xyz;
std::vector<Vector3D> Getxyz()
{
return xyz; // what it returns? reference or copy of this object.
}
Vector3D& getVec(int i)
{
return this->xyz[i]; // is it OK?
}
void addVec(Vector3D p)
{
this->xyz.push_back(p);
}
};
void Somefunction()
{
Vertex* p = new Vertex;
p->Getxyz().push_back(Vector3D(0,0,0)); // 1. is it valid and correct?
Vector3D vec = p->getVec(0); // 2. is it valid and correct?
}
答案 0 :(得分:4)
不,这不正确。 Getxyz()
返回一个临时的。您可以push_back
该临时元素,但不会影响xyz
,因为它只是该对象的副本。如果您希望能够变异xyz
,则需要返回引用:
std::vector<Vector3D>& Getxyz();