Я искал аналогичную проблему в Интернете, но я не мог найти ничего полезного, вот проблема:
Когда DeleteConnectedEdges
называет Method1
на 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();
}
};
((GenericEdgeClass)(*Edges)[1]).Method1();
^^^^^^^^^^^^^^^^^^
Что там делают? Это заставляет функцию вызываться на временной копии объекта в Edges
, а не на самом объекте, поэтому вы не видите, какую модификацию он должен был сделать. Исправление состоит в том, чтобы просто избавиться от него:
(*Edges)[1].Method1();