C++での演算子のオーバーロードについて質問があります。
割り当てのために、JavaのArrayListのような配列を含むクラスを作成する必要があります。
私がしなければならないことの1つは、配列のサイズを追跡することです。サイズは含まれる要素の量ですが、容量はクラスが配列を拡張する前に含めることができる最大量です。
クライアントコードは、コンストラクターを呼び出すときにサイズを指定します。ただし、新しい要素が追加された場合、サイズを変更する方法を考え出す必要があります。
私の先生は、平等のさまざまな側面のために演算子をオーバーロードできることについて何かを言いました。これは本物ですか、それとも私は彼女を誤解しましたか?これがうまくいけば、それは私の問題に対する最適な解決策になるでしょう。
[]演算子の現在のオーバーロードは次のとおりです。
int & ArrayWrapper::operator [] (int position){
if(position == _size){
if(_size == _capacity){
changeCapacity(_capacity+10);
}
}
return _array[position];
}
これは取得には問題なく機能しますが、誰かが「=」の左側から呼び出した場合に、サイズを拡張する必要があるかどうかを確認できるようにしたいと思います。
編集:これが本物ではない場合、誰かが問題の別の解決策を考えることができますか?私が考えた解決策の1つは、getSize()メソッドが呼び出されるたびに配列全体を通過するようにすることですが、安っぽいように見えるので、実際にはその解決策を使用したくありません。
編集:明確にするために、私は配列の拡張が機能するかどうかを尋ねていません。新しい要素が追加されるたびに、サイズに1を追加する必要があります。たとえば、クライアントがサイズ15と容量25の配列を作成し、Array [15]に何かを追加しようとすると、サイズを16に増やす必要があります。オーバーロードでそれを行う方法があるかどうか疑問に思いました。