vector :: apagar com o membro do ponteiro

Estou manipulando vetores de objetos definidos da seguinte maneira:

class Hyp{
public:
int x;
int y;
double wFactor;
double hFactor;
char shapeNum;
double* visibleShape; 
int xmin, xmax, ymin, ymax; 

Hyp(int xx, int yy, double ww, double hh, char s): x(xx), y(yy), wFactor(ww), hFactor(hh), shapeNum(s) {visibleShape=0;shapeNum=-1;};

//Copy constructor necessary for support of vector::push_back() with visibleShape
Hyp(const Hyp &other)
{
    x = other.x;
    y = other.y;
    wFactor = other.wFactor;
    hFactor = other.hFactor;
    shapeNum = other.shapeNum;
    xmin = other.xmin;
    xmax = other.xmax;
    ymin = other.ymin;
    ymax = other.ymax;
    int visShapeSize = (xmax-xmin+1)*(ymax-ymin+1);
    visibleShape = new double[visShapeSize];
    for (int ind=0; ind<visShapeSize; ind++)
    {
        visibleShape[ind] = other.visibleShape[ind];
    }
};

~Hyp(){delete[] visibleShape;};

};

Quando crio um objeto Hyp, aloco / escrevo memória para visibleShape e adiciono o objeto a um vetor com vector :: push_back, tudo funciona como esperado: os dados apontados por visibleShape são copiados usando o construtor de cópia.

Mas quando eu uso vector :: erase para remover um Hyp do vetor, os outros elementos são movidos corretamente, EXCETO os membros do ponteiro visibleShape que agora estão apontando para endereços errados! Como evitar este problema? Estou esquecendo de algo?

questionAnswers(2)

yourAnswerToTheQuestion