2014-01-27 113 views
0

我很困惑要返回一个矢量对象,所以请指导我。谢谢。如何返回一个矢量对象?

我的代码:

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

怎么可能可能返回“这个对象的地址”?地址类型是指针类型,函数的返回类型不是指针类型。 –

+0

对不起,我的意思是说对象的引用不是地址.. – furqan

回答

4

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

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

所以你的意思是返回对象的引用不是该对象的副本,并且所有操作都是有效的,如p-> Getxyz()。clear(), p-> Getxyz()。push_back等。其实我只想返回同一个对象而不是该对象的副本。 – furqan

+0

@furqan是的,引用返回相同的对象。不执行复制。 – 0x499602D2

+0

@furqan:这是“返回对象的引用”。短语“返回同一个对象”没有意义。 – Beta