我一直在网上搜索类似的问题,但我找不到任何有用的信息,这就是问题所在:
当DeleteConnectedEdges
在Method1
的{{1}}上调用Element 1
Vector Edges
时,Method1
无法修改数据,但没有错误说明。
我该如何使这项工作?非常感谢你。
int main(int argc, char** argv) {
std::vector<GenericEdgeClass> Edges;
...
}
class GenericNodeClass {
private:
std::vector<GenericEdgeClass> *Edges;
public:
GenericNodeClass(
std::vector<GenericEdgeClass> *EdgesPtr,
Point3DClass position,
ID_TYPE new_ID);
virtual ~GenericNodeClass();
ID_TYPE ID;
void DeleteConnectedEdges() {
((GenericEdgeClass)(*Edges)[1]).Method1();
}
};
答案 0 :(得分:1)
((GenericEdgeClass)(*Edges)[1]).Method1();
^^^^^^^^^^^^^^^^^^
那个演员是做什么的?这导致函数在Edges
中的对象的临时副本上被调用,而不是对象本身,这就是为什么你没有看到它应该做出的任何修改。修复只是为了摆脱它:
(*Edges)[1].Method1();