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
。这就是您需要调整大小的原因。