簡単なクラスを書かなければならない課題があります。このクラスは、文字列の配列を保持し、2 つの配列の要素を新しい配列に結合して返す '+' 演算子のオーバーロードを含める必要があります。
さらに、この関数は「const」である必要があり、ここで問題が発生しました。クラスの「サイズ」属性とそれが保持している配列を変更しようとすると、エラーが発生します。また、オブジェクトを返そうとするとエラーが発生します。最初の 2 つのエラーの原因は、関数「const」を宣言したためだと理解していますが、const メソッド内でこれらの値を再割り当てする適切な方法は何ですか?
私は C++ の学習を始めたばかりで、その概念は私にとって少し新しいものです。この件について調べてみましたが、有用な答えが見つかりませんでした。そうは言っても、私は本当にこの機能を機能させる必要があるので、どんな助けも大歓迎です。
クラスは次のとおりです。
class FirstClass{
private:
string* sList;
unsigned int _size;
public:
FirstClass(const unsigned int initSize = 1);
// copy, assignment, and destructor
FirstClass& operator+(const FirstClass& add)const;
};
FirstClass::FirstClass(const unsigned int initSize):_size(initSize)
{
sList = new string[initSize];
return;
}
FirstClass& FirstClass::operator+(const FirstClass& add)
const{
if(add.sList){
int prevSize = this->_size;
this->_size += add._size; // can't do this
string newList[this->_size];
for(int a=0; a<prevSize; a++){
newList[a] = this->sList[a];
}
for(int b=0; b<add._size; b++){
sList[b+prevSize] = add.sList[b];
}
delete [] sList;
this->sList = newList; // or this
}
return *this; // or this
}
編集:迅速な対応と、私がしていたことを片付けてくれてありがとう。これが私の修正されたコードです。
FirstClass FirstClass::operator+(const FirstClass& add)
const{
FirstClass ma(this->_size + add._size);
if(add.sList){
for(int a=0; a<this->_size; a++){
ma.sList[a] = this->sList[a];
}
for(int b=0; b<add._size; b++){
ma.sList[b+this->_size] = add.sList[b];
}
}
return ma;
}