首先,我想要做的是通过执行“object++”来调整类数组的大小,但在执行 C++ 程序时出现“Segmentation fault(core dumped)”错误。问题出在 operator++ 重载方法中。它应该将第一个数组的包含复制到临时对象中(operator= 重载已经完成并且效果很好),然后更改数组的高度和宽度,最后再次复制对象内的临时对象,即回来。当我评论“*this = *tmpPlateau;” 数组已调整大小,但包含未复制。这是代码:
Plateau& Plateau::operator++() {
// New sizes
int newHauteur = this->height + 2 ;
int newLargeur = this->width + 2 ;
// Tableau temporaire avec le contenu du plateau actuel
Plateau* tmpPlateau = this ;
// Actualisation des dimensions
this->height = newHauteur ;
this->width = newLargeur ;
this->plateau = new Etat*[height] ;
for (int i = 0; i < height; i++) {
plateau[i] = new Etat[width] ;
}
*this = *tmpPlateau ;
return *this ;
}
operator= 重载方法:
Plateau& Plateau::operator=(const Plateau& tab) {
this->plateau = new Etat*[height] ;
for (int i = 0; i < height; i++) {
this->plateau[i] = tab.plateau[i] ;
}
Plateau(height, width) ;
}