我一直在网上搜索类似的问题,但没有找到任何有用的信息,这就是问题所在:
当 DeleteConnectedEdges
在 Vector Edges
的 Element 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/