2012-08-16 35 views
3

的C++ 11代碼下列位:VC++ 2010 「數組不是性病的成員」 錯誤

std::array<float, 3> A; 

獲取的錯誤消息:

array is not a member of std. 

在Visual Studio中,字「數組」是藍色的,表明它是一個關鍵字。這是CLI的擴展。我以爲我通過去屬性/ C C++ /語言並將「禁用語言擴展名」設置爲來修復它。我也有屬性/一般設置爲沒有公共語言支持。仍然沒有快樂。

如何讓程序工作無視array在編輯器中的可見性作爲關鍵字?

+0

固定的,因爲它聽起來像你只關心編輯器的可見問題。 – 2012-08-18 18:36:27

回答

7

您需要包含<array>標頭。

+0

我想出來,試圖刪除這個問題,但你打敗了我。現在不能刪除你已經回答的問題。 「陣列」的藍色讓我失望。第一個虛假的波浪,現在是虛假的藍色墨水。在CLI關閉的情況下,array不是關鍵字,但它仍然是紅色的。詹姆斯,你當然有幫助。我很欣賞它。 – 2012-08-16 19:53:58

+0

說「紅」。 Shoulda說「藍色」。當我的5分鐘用完時,完成編輯的一半。我今天一直在變笨。時間休息一下。 – 2012-08-16 20:01:08

+1

即使C++/CLI被禁用,語法着色器也會識別C++/CLI關鍵字。在Visual Studio 2012中,這種體驗實際上更好,它具有語義着色(因此,可以爲一種顏色着色,另一種功能,另一種變量等)。通過語義着色,當且僅當包含''時,'array'將被着色爲一種類型(我發現這對於快速識別我錯誤輸入,丟失包含或名稱不正確的名稱最有幫助資格。) – 2012-08-16 20:03:10

0

此錯誤甚至可以在Ubuntu的 '陣列' 指令使用g ++再現:

例如,該C++代碼:

#include <iostream> 
#include <array> 

using namespace std; 
int main(){ 
    std::array<int, 5> myints; 
    cout << myints.size(); 
} 

編寫和運行是這樣的:

g++ -o s s.cpp 
./s 

打印錯誤:

/usr/include/c++/4.6/bits/c++0x_warning.h:32:2: error: #error This 
file requires compiler and library support for the upcoming ISO 
C++ standard, C++0x. This support is currently experimental, and 
must be enabled with the -std=c++0x or -std=gnu++0x compiler options. 
s.cpp: In function ‘int main()’: 
s.cpp:6:5: error: ‘array’ is not a member of ‘std’ 

解決方案:

g++ -o s s.cpp -std=c++0x 
./s 

然後程序正確打印:使用編譯器選項-std=c++0x編譯它

5