2014-01-27 168 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