评估监视窗口中的下标运算符

时间:2013-07-04 12:00:32

标签: visual-c++ visual-studio-debugging

我有一个简单的数组包装类,如下所示:

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];
}

然后观察窗口能够显示结果。但我更愿意使用下标运算符。

1 个答案:

答案 0 :(得分:2)

我找到了一个不太方便的解决方案,但似乎有效。如果我使用扩展形式的操作符调用,那么它适用于VC ++ 2012:

a.operator[](0)

我不清楚为什么这两种形式与VC ++调试器不同。所以我发布了一个新问题here