2013-07-04 52 views
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 Preview中試過這個:同樣的事情。 有什麼辦法解決這個問題嗎?

如果我有一個成員函數替換下標操作:

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

然後觀察窗能告訴我結果。但我更喜歡使用下標運算符。

回答

1

我發現一個解決方案,這不是很方便,但似乎工作。如果我使用話務員呼叫的擴展形式,然後它在VC++ 2012:

a.operator[](0) 

這不是我清楚爲什麼這兩種形式都是VC++調試器不同。所以我發佈了一個新問題here