2

私はC ++を学ぶために次の実践的な作業を完了しなければなりません.答えを探してすべての作業を読むのに長い時間を費やしてきました. コードは次のようになります。

SafeArray& SafeArray::operator =(const SafeArray& other) {
//Add code here
return *this;
}

ある配列を別の配列に割り当てるコードを実装する必要があります。コードが正しく理解されていれば、メソッドは定数「SafeArray」の正式なパラメーターを取り、other と呼ばれます。SafeArray の後の & は、コピーではなく実際の配列自体が渡されることを意味し、const は変更できないことを意味します。同様に、このメソッドは配列のコピーではなく、実際の配列自体を返します。

そのため、これはポインターを作成し、「その他」のメモリ位置を参照し、逆参照された結果を返すという単純なケースになると思いました。この考えを実際にコーディングしようとしても、うまくいきませんでした。

私は次のようなことをしてみました:

SafeArray* ptr = &other; //This should have created a SafeArray pointer to the memory location of the array "other".

ここでの問題は、エラーが発生することです。

main.cpp:31:23: error: invalid conversion from ‘const SafeArray*’ to ‘SafeArray*’ [-fpermissive]

その理由は、変更が許可されていないものを変更できるものに変換しようとしているからだと思います。

次のようなコードを記述できます。

const SafeArray* = &other;

しかし、その後、値を適切に返すこともできません。私は理論的にここで何かを明らかに誤解しています.誰かが私が欠けているものを説明してもらえますか. 私は喜んで自分でコーディングを行いましたが、このメソッド呼び出しを完全に理解することはできません。

4

1 に答える 1

1

この演算子を正しく定義するには、パラメータとして渡されたオブジェクトの内容をにコピーするだけです。SafeArrayotherthis

この機能を完了する方法を知る唯一の方法は、SafeArrayクラスの内容、つまりデータ メンバーを理解することです。

于 2013-04-09T03:52:27.387 に答える