在向量中存储指针对象时遇到困难。 我存储这样的值:浅拷贝与向量
face.firstEdge = &edge
all_faces.push_back(face);
其中face.edge
是一个指向其它对象。 我的矢量声明如下std::vector<Face> all_faces;
和结构是:
struct Face{
Edge* firstEdge
}
当我后来通过我的元素,看起来他们都具有相同的价值,他们shouln't有
for(int i = 0; i < all_faces.size(); i++){
all_faces[i].firstEdge->vertex->x;
}
我知道C++编译器默认做一个浅拷贝或者其他东西,所有东西指向同一个地址,我不想要这个。
编辑:边缘是一个本地变量Edge edge = {};
每次在循环中声明和修改。
向我们展示您的矢量声明! – CinCout
是否定义了face的复制构造函数?你可以显示脸型的类型,矢量声明等的定义。 – Ramon
什么范围有“边缘”? –