2011-02-09 50 views
1

名单上有在C++中,其中有一个唯一的部件Poly3D类:list<Point_3>获取的std ::引用

using namespace std; 

struct Poly3D 
{ 
public: 
    Poly3D(const list<Point_3> &ptList); 


private: 
    list<Point_3> ptList; 

}; 

我的问题是,如何让(在这个意义上C#中)引用,所以每次访问Poly3D.ptList时都会返回相同的副本?

回答

2
#include <list> 
using namespace std; 

struct Point_3{ 
}; 

struct Poly3D 
{ 
public: 
    Poly3D(const list<Point_3> &ptList); 
    list<Point_3>& GetPointList(); 


private: 
    list<Point_3> ptList; 

}; 

list<Point_3>& Poly3D::GetPointList(){ 
    return ptList; 
} 

int main(void){ 
    list<Point_3> myList; 
    Poly3D myPoly(myList); 
    list<Point_3>& myListRef = myPoly.GetPointList(); 
} 
+0

我认为'GetPointList()`的const方法不工作 - 它甚至不能编译。 – Graviton 2011-02-09 11:40:02

5

如果你真的想提供给list直接访问,那么就写,通过参考返回一个getter:

struct Poly3D 
{ 
public: 
    ... 

    list<Point_3> &getList() 
    { 
     return ptList; 
    } 

... 
}; 

但是,如果你这样做,你可能也只是使list成员public

+0

该死的,你打我吧。 :) – Xeo 2011-02-09 11:25:53