2017-01-05 29 views
0

起初我以爲這可能是C++的語言限制,但是這實際上編譯,它只是智能感知不識別類成員由於某些原因:Visual Studio的智能感知不能識別類成員在支架初始化

struct MyStruct 
{ 
    int member; 
}; 

MyStruct staticObj; 

int main() 
{ 
    MyStruct localObj; 
    int arr1[] = { 1, 2, localObj.member };  // When typing localObj Intellisense says it has no members 
    int arr2[] = { 1, 2, staticObj.member };  // When typing staticObj Intellisense says it has no members 

} 

我認爲C++不支持可變長度數組的事實可能是解釋,但這是一個編譯時間已知的數組長度,只是它的值是未知的。這是我遇到的錯誤嗎?在Ideone.com上編譯也很好

+0

當您嘗試編譯它時它實際編譯嗎? – NathanOliver

+1

智能感知很棒,但它並不完美。它也不同於編譯器。有時智能感知無法提供,但這並不意味着您的代碼不正確。 –

+0

你應該給你的編譯器名稱和版本。 –

回答

3

這顯然是一個Intellisense錯誤。

不應該依賴智能感知來驗證代碼的正確性。

有時,不幸的是,這意味着你必須忍受假陽性紅色波浪線。

2

起初我以爲這可能是C++的語言限制,但是這實際上編譯

這個程序是完全形成了。

我認爲,C++不支持可變長度數組這一事實可能是解釋,但這是一個編譯時間已知的數組長度,只是它的值是未知的。

事實上,代碼中沒有VLA,VLA與此無關。

這是我遇到的錯誤嗎?

MyStruct確實有會員,所以如果intellisense說,否則,它似乎是一個錯誤。