我有一个简单的数组包装类,如下所示:
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 和非常量 [] 运算符。我也尝试使用 () 运算符,它也不起作用,但它给出了不同的错误消息。我在 VS2012 和 VS2013 Preview 中试过这个:同样的事情。有没有什么办法解决这一问题?
如果我用成员函数替换下标运算符:
int & Item(int aIndex)
{
return m_Data[aIndex];
}
然后监视窗口能够向我显示结果。但我更喜欢使用下标运算符。