我正在处理一项使用“图像”类操作 *.ppm 图像的任务。当调用复制构造函数时,它会编译然后段错误。这里是:
Image::Image(const Image & imageToCopy) {
fileType = imageToCopy.fileType;
width = imageToCopy.width;
height = imageToCopy.height;
maxColor = imageToCopy.maxColor;
image = new int *[height];
for(int i=0; i < height; i++) {
image[i] = new int [width];
for(int j=0; j < width; j++) {
image[i][j] = imageToCopy.image[i][j];
}
}
}
像这样调用:
Image image2(image1);
我对为什么会发生这种情况感到有些不知所措。我不知道出了什么问题,因为代码几乎与我的构造函数相同,可以正常工作。唯一的区别是我有
image[i][j] = imageToCopy.image[i][j];
代替
imageInputStream >> image[i][j];
想法?谢谢
编辑:构造函数如下:
Image::Image(const char* filename) {
ifstream imageInputStream;
imageInputStream.open(filename);
imageInputStream >> fileType;
imageInputStream >> width;
imageInputStream >> height;
imageInputStream >> maxColor;
image = new int *[height];
for(int i=0; i < height; i++) {
image[i] = new int [width];
for(int j=0; j < width; j++) {
imageInputStream >> image[i][j];
}
}
imageInputStream.close();
}