まず、「オブジェクト++」を実行してクラスの配列がいっぱいになったときにサイズを変更したいのですが、C++プログラムを実行すると「セグメンテーション違反(コアダンプ)」エラーが発生しました。問題は 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) ;
}