2017-06-15 49 views
1

我正在製作一個簡單的程序,通過使用冒泡排序來排序一副撲克牌,然後顯示它。我收到一個奇怪的運行時錯誤。有人可以向我解釋這個錯誤,並就如何解決它提出建議嗎?已使用C++異常處理程序,但展開語義未啓用:這是什麼意思,以及如何解決?

錯誤:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(341): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\exception(359): warning C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc

C:\SortedCards.cpp : fatal error C1083: Cannot open compiler generated file: 'C:\SortedCards.obj': Permission denied

我的代碼:

#include <iostream> 
#include <vector> 
using namespace std; 

class SortedCards 
{ 
private: 
    vector<double> v; 
    int nElems; 

    void swap(int one, int two) { 
     double temp = v[one]; 
     v[one] = v[two]; 
     v[two] = temp; 
    } 

public: 
    SortedCards(int max) : nElems(0) 
    { 
     v.resize(max); 
    } 

    void insert(double value) 
    { 
     v[nElems] = value; 
     nElems++; 
    } 

    void display() { 
     for (int i = 0; i < nElems; i++) { 
      if (v[i] == 11) { 
       cout << "A "; 
      } 
      else if (v[i] == 12) { 
       cout << "J "; 
      } 
      else if (v[i] == 13) { 
       cout << "Q"; 
      } 
      else if (v[i] == 14) { 
       cout << "K"; 
      } 
      else { 
       cout << v[i] << " "; 
      } 
     } 
     cout << endl; 
    } 

    void bubbleSort() 
    { 
     int out, in; 
     for (out = nElems - 1; out > 1; out--) { 
      for (in = 0; in < out; in++) { 
       if (v[in] > v[in + 1]) { 
        swap(in, in + 1); 
       } 
      } 
     } 
    } 
}; 

int main() { 
    int maxSize = 100; 
    SortedCards arr(maxSize); 

    arr.insert(1); 
    arr.insert(2); 
    arr.insert(3); 
    arr.insert(4); 
    arr.insert(5); 
    arr.insert(6); 
    arr.insert(7); 
    arr.insert(8); 
    arr.insert(9); 
    arr.insert(10); 
    arr.insert(11); 
    arr.insert(12); 
    arr.insert(13); 
    arr.insert(14); 
    arr.insert(1); 
    arr.insert(2); 
    arr.insert(3); 
    arr.insert(4); 
    arr.insert(5); 
    arr.insert(6); 
    arr.insert(7); 
    arr.insert(8); 
    arr.insert(9); 
    arr.insert(10); 
    arr.insert(11); 
    arr.insert(12); 
    arr.insert(13); 
    arr.insert(14); 

    arr.display(); 
    arr.bubbleSort(); 
    arr.display(); 
    return 0; 

} 
+2

它說如何解決它在錯誤消息中的權利。 –

+1

如何啓用展開語義? –

+0

錯誤信息告訴你,我引用:「指定'/ EHsc'」。如果你不知道這意味着什麼,爲什麼不在你最喜歡的搜索引擎中搜索'/ EHsc'?這可能證明照亮。 –

回答

0

/EHsc的事情是不是一個錯誤;這只是一個警告。該錯誤是有關文件I/O:

Cannot open compiler generated file: 'C:\SortedCards.obj': Permission denied 

只是確保你對此文件的寫權限後重建。

+0

如何確保我對文件有寫入權限? –

+0

@QasimImtiaz好吧,試着刪除它。 – ikh

相關問題