Pointer to Vector调用的方法无法修改对象

时间:2013-11-29 14:28:13

标签: c++ pointers vector

我一直在网上搜索类似的问题,但我找不到任何有用的信息,这就是问题所在:

DeleteConnectedEdgesMethod1的{​​{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();
    }
};

1 个答案:

答案 0 :(得分:1)

((GenericEdgeClass)(*Edges)[1]).Method1();
 ^^^^^^^^^^^^^^^^^^

那个演员是做什么的?这导致函数在Edges中的对象的临时副本上被调用,而不是对象本身,这就是为什么你没有看到它应该做出的任何修改。修复只是为了摆脱它:

(*Edges)[1].Method1();