如何返回矢量对象?

时间:2014-01-27 00:47:23

标签: c++ visual-c++ pointers vector stdvector

我很难回复一个矢量对象,所以请指导我。感谢。

我的代码:

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?

}

1 个答案:

答案 0 :(得分:4)

不,这不正确。 Getxyz()返回一个临时的。您可以push_back该临时元素,但不会影响xyz,因为它只是该对象的副本。如果您希望能够变异xyz,则需要返回引用

std::vector<Vector3D>& Getxyz();