Метод, вызываемый Pointer to Vector, не может изменить объект

0

Я искал аналогичную проблему в Интернете, но я не мог найти ничего полезного, вот проблема:

Когда 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();
    }
};
Теги:
pointers
vector

1 ответ

1
Лучший ответ
((GenericEdgeClass)(*Edges)[1]).Method1();
 ^^^^^^^^^^^^^^^^^^

Что там делают? Это заставляет функцию вызываться на временной копии объекта в Edges, а не на самом объекте, поэтому вы не видите, какую модификацию он должен был сделать. Исправление состоит в том, чтобы просто избавиться от него:

(*Edges)[1].Method1();
  • 0
    Работает! Спасибо! (Я думал, что вы должны были приводить при использовании указателей на векторы, но, очевидно, я был очень неправ)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню