2

次のような単純な配列ラッパー クラスがあります。

class MyArray
{
    int * m_Data;
    int m_Size;

public:
    MyArray(int aSize) : m_Size(aSize), m_Data(new int[aSize])
    {
    }

    int & operator [](int aIndex)
    {
        return m_Data[aIndex];
    }

    const int & operator [](int aIndex) const
    {
        return m_Data[aIndex];
    }
};

MyArray a(10);

デバッガー (クイック ウォッチ、イミディエイト ウィンドウなど) で添字演算子を評価しようとすると、a[0]エラーが発生しa[0] no operator "[]" matches these operandsます。クラス フィールドを掘り下げて、配列の内容に到達できることはわかっています。しかし、コード行の一部をコピーしてウォッチ ウィンドウで評価する方がはるかに簡単です。const および非 const [] 演算子を削除してみました。() 演算子も使用してみましたが、どちらも機能しませんでしたが、別のエラー メッセージが表示されました。私はVS2012とVS2013プレビューでこれを試しました:同じこと。これを修正する方法はありますか?

添え字演算子をメンバー関数に置き換えると、次のようになります。

int & Item(int aIndex)
{
    return m_Data[aIndex];
}

その後、ウォッチウィンドウに結果が表示されます。しかし、添え字演算子を使用したいと思います。

4

1 に答える 1