Je delete/free plusieurs fois le même tableau et je ne comprend pas vraiment pourquoi. Le code est assez compliqué donc je vais essayer de résoudre le problème par élimination et j'aurait donc besoin d'un confirmation.
Voici ma classe:
Code :
- class Triangle
- {
- private:
- Proxy_Vertex3D p[3];
- Edge* edge;
- public:
- Triangle();
- ~Triangle();
- Proxy_Vertex3D* get() ;
- const Proxy_Vertex3D* get_const() const;
- Edge* get_edge() const;
- Triangle &operator=(const Triangle & );
- };
- Triangle::Triangle()
- {
- for(int i=0;i<3;i++)
- p[i]=Proxy_Vertex3D();
- edge = new Edge[3];
- edge[0] = Edge(p[0],p[1]);
- edge[1] = Edge(p[1],p[2]);
- edge[2] = Edge(p[2],p[0]);
- }
- Triangle::~Triangle()
- {
- delete[] edge;
- }
- Triangle &Triangle::operator=(const Triangle &t)
- {
- if (&t != this)
- {
- edge = new Edge[3];
- for(int i=0;i<3;i++)
- edge[i] = t.get_edge()[i];
- for(int i=0;i<3;i++)
- p[i] = t.get_const()[i];
- }
- return *this;
- }
- Proxy_Vertex3D* Triangle::get() {return p;}
- const Proxy_Vertex3D* Triangle::get_const() const{return p;}
- Edge* Triangle::get_edge() const {return edge;}
|
Etant donner que j'utilise un pointeur dans la classe, il faut que je le delete dans le destructeur. Il faut donc que je redeclare l'affectation pour faire une copie de ce tableau (edge). J'aimerait savoir si je m'y prend bien ?
Je précise que si j'utilise un pointeur et non pas un tableau fixe ou un vector c'est à cause d'un probleme d'utilisation croisé de classes.