2013-09-16 47 views
1

我已經檢查了SO已經爲簡單方法來解決這個錯誤。在另一臺計算機上編譯時,我沒有得到這個,但突然間現在它不在我的PC上編譯。下面是我得到的錯誤:從初始化程序列表中分配給一個數組

Error: Assigning to an array from an initializer list 

而這裏的代碼:

int maze[12][12]; 

void print(bool playing); 

int main() 
{ 
    printMaze(false); 
    playGame(); 

    return 0; 
} 

void print(bool playing) 
{ 
    if (!playing) maze = { 
     {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 
     {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, 
     {2, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1}, 
     {1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1}, 
     {1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 3}, 
     {1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1}, 
     {1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, 
     {1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, 
     {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, 
     {1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1}, 
     {1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, 
     {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} 
    }; 
} 

它也可能是值得一提的是,我得到在同一行警告:

Warning: Extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default] 

我知道這很明顯意味着我必須使用這兩者中的一個來使用擴展的初始化列表,但不知道如何解決此問題。

編輯:

有G ++遵循C++ 11的ISO C++語言標準的設置中刪除警告,而不是錯誤。

+0

您正在使用哪種編譯器? – jmstoker

+0

你可以在你的文章中包含實際的編譯器錯誤信息嗎? – bennofs

+0

MinGW在Code :: Blocks – Dragonphase

回答

0

你的編譯步驟是什麼樣的?警告很清楚:您試圖使用需要-std=c++11-std=gnu++11的功能,儘管默認情況下該功能已啓用,但您可能以某種方式覆蓋了該功能(即明確將其關閉)。你應該仔細檢查你的編譯過程,並確保你沒有阻止這個功能被允許。

+0

我說實話,我真的不知道在哪裏尋找我的編譯器進程。我正在使用MinGW編譯Code :: Blocks。 – Dragonphase

+0

您將需要找到該信息。某處必須有一個選項來設置/修改你的編譯器標誌。我會尋找任何看起來像「-std = C++ 98」或類似的東西,即不是警告提到的兩個選項。 gcc 4.8.1的完整列表(假設你是真正的編譯器)可以在這裏找到:http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/C-Dialect-Options。 html – patrickvacek

+0

我在我的編譯器標誌列表中找不到任何相關的東西。此外,我得到這個錯誤的事實告訴我,我的代碼不會在不同的機器上以相同的方式編譯;有沒有其他方法可以解決這個問題,而不需要改變編譯器設置 – Dragonphase

1

解決方法是使用舊式C函數memcpy。這將適用於較老的編譯器。

int maze[12][12]; 

void printMaze(bool playing); 

int main() 
{ 

     printMaze(false); 
     playGame(); 
     return 0; 
} 

void printMaze(bool playing) 
{ 

     static int maze1[12][12] = { 
      {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, 
      {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, 
      {2, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1}, 
      {1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1}, 
      {1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 3}, 
      {1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1}, 
      {1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, 
      {1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, 
      {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, 
      {1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1}, 
      {1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, 
      {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} 
     }; 

     if (!playing) memcpy(maze, maze1, 12*12*sizeof(int)); 
} 
相關問題