const
コピー コンストラクター から削除するMyArray(const MyArray& cArrayInput)
と、すべて問題ありません。そうしないと、次のコンパイル エラーが次の行で発生しますm_paArray[i] = cArrayInput[i]
。
エラー C2678: バイナリ '[': 'const MyArray' 型の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)。
を使用できることを知っていますcArrayInput.m_paArray[i]
。しかし、オーバーロードされた添字関数を使用するにはどうすればよいでしょうか?
class MyArray
{
private:
int m_nLength;
double* m_paArray;
public:
MyArray():m_nLength(0),m_paArray(0)
{
}
// copy constructor
MyArray(const MyArray& cArrayInput)
{
m_nLength = cArrayInput.m_nLength;
m_paArray = new double[m_nLength];
for(int i=0;i<m_nLength;i++)
m_paArray[i] = cArrayInput[i];
}
double& operator[](const int nIndex)
{
assert(nIndex >= 0 && nIndex < m_nLength);
return m_paArray[nIndex];
}
};