C++ 将类复制到现有的类C++;
如何将C++ 将类复制到现有的类C++;,c++,class,copy,C++,Class,Copy,如何将新网格复制到现有的此->网格?我不太明白如何安全地执行此操作,以便在新网格上调用析构函数时不会引起问题。问题的前言是我需要调整网格的大小,但将原来较小的网格放入新的较大网格中 void Grid::resize(int new_width, int new_height){ Grid *new_grid = new Grid(new_width,new_height); int x_padding = width - this->width; int size
新网格
复制到现有的此->网格
?我不太明白如何安全地执行此操作,以便在新网格上调用析构函数时不会引起问题。问题的前言是我需要调整网格的大小,但将原来较小的网格放入新的较大网格中
void Grid::resize(int new_width, int new_height){
Grid *new_grid = new Grid(new_width,new_height);
int x_padding = width - this->width;
int size = this->width * this->height;
int multiplier = 0;
for (int i = 0; i < this->height; i++) {
for (int j = 0; j < this->width; ++j) {
if (this->get(i,j) == Cell::ALIVE){
new_grid->set(i+(x_padding * multiplier), j, Cell::ALIVE);
}
}
multiplier++;
}
// Need to copy here
}
void Grid::resize(int new_width,int new_height){
网格*新网格=新网格(新网格宽度、新网格高度);
int x_padding=width-此->宽度;
int size=此->宽度*此->高度;
整数乘数=0;
对于(int i=0;iheight;i++){
对于(int j=0;jwidth;++j){
if(this->get(i,j)=Cell::ALIVE){
新建网格->设置(i+(x_填充*乘数),j,单元格::活动);
}
}
乘法器++;
}
//需要在这里复印吗
}
我知道存在一些问题,比如负尺寸或网格小于原始区域或相同尺寸。这不是目前的问题,我知道如何修复这些错误。您需要实现复制构造函数、复制赋值运算符、移动构造函数和移动赋值运算符。这些(连同析构函数)都是“你很好”,因为
new\u grid
在这里永远不会被销毁,它只是泄漏了;)在不了解类成员的情况下,很难说您需要复制什么以及如何复制。您的Grid
很可能有一个底层数据结构(可能是std::vector
),而不是另一个Grid
。这就是您需要调整大小的原因。