我寫了一個類,看起來像C++中類的範圍是什麼?
class Mesh {
public:
vector<Vertex> vs;
}
其中Vertex
是
class Vertex {
public:
const double x, y, z;
}
我有一個從文件加載Mesh
功能:
shared_ptr<Mesh> load_mesh(string filename) {
//....
vector<Vertex> vs;
Vertex v(1, 2, 3);
vs.push_back(v);
return shared_ptr<Mesh>(Mesh(vs));
}
我的問題是涉及Vertex
和vector
的範圍。
一個或兩個是否會超出範圍?
哪個(如果有的話)替代品是首選?
class Mesh1 {
public:
vector<shared_ptr<Vertex>> vs;
}
class Mesh2 {
public:
shared_ptr<vector<Vertex>> vs;
}
class Mesh3 {
public:
shared_ptr<vector<shared_ptr<Vertex>>> vs;
}
或者是否有更好/更簡單的方法來處理?
你的原稿應該沒問題。 'push_back'在本地'vs'中存儲'v'的副本;並且考慮到你聲明'Mesh'的方式,構造一個應該複製本地'vs'及其所有元素。局部變量將超出範圍並被銷燬,但「Mesh」中的副本是安全的。 – 2014-09-20 21:54:23
啊,對不起,修正了這個問題。感謝您的迴應! – sdasdadas 2014-09-20 21:57:31
好像你在問函數內的對象的範圍,而不是類內類的範圍。 – 2014-09-20 22:00:14