Я делаю очень тупые ошибки, просто обертывая указатель на какую-то новую память в простом классе.C++ конструктор с новым
class Matrix
{
public:
Matrix(int w,int h) : width(w),height(h)
{
data = new unsigned char[width*height];
}
~Matrix() { delete data; }
Matrix& Matrix::operator=(const Matrix&p)
{
width = p.width;
height = p.height;
data= p.data;
return *this;
}
int width,height;
unsigned char *data;
}
.........
// main code
std::vector<Matrix> some_data;
for (int i=0;i<N;i++) {
some_data.push_back(Matrix(100,100)); // all Matrix.data pointers are the same
}
Когда я заполняю вектор экземплярами класса, внутренние указатели данных все указывают на одну и ту же память?
Спасибо всем - нет ничего лучше стоять в понедельник и говорить «Я идиот» миру ;-) –