c++ - 指向 Vector 的指针调用的方法无法修改对象

标签 c++ pointers vector

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

DeleteConnectedEdgesVector EdgesElement 1 上调用 Method1 时,似乎 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();
    }
};

最佳答案

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

Actor 在那里做什么?这会导致在 Edges 中对象的临时拷贝而不是对象本身上调用该函数,这就是为什么您看不到它应该进行的任何修改的原因。修复只是为了摆脱它:

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

关于c++ - 指向 Vector 的指针调用的方法无法修改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287961/

相关文章:

c - 如何将指针变量移动指定字节数?

c++ - 如何将名称读入指针数组并输出?

c++ - 将字符串拆分为两个不同的 vector C++

c++ - 如何将整个 vector 复制到队列中?

c++ - 拥有一个整数矩阵 MxN 如何将它们分组为具有 boost 几何形状的多边形?

c++ - 从覆盖函数调用覆盖函数

c++ - 编译器与简单元函数的差异

c++ - 在类中初始化一次成员变量

c++ - 如何显示一个字符数字

c++ - 重载可变模板成员函数和可变模板函数