2017-06-15 1 views
1

Ich mache ein einfaches Programm, das ein Kartenspiel mit Hilfe einer Blasensortierung sortiert und dann anzeigt. Ich bekomme einen seltsamen Laufzeitfehler. Kann mir jemand den Fehler erklären und Vorschläge zur Fehlerbehebung machen?C++ - Ausnahme-Handler verwendet, aber Semantik zum Abwickeln ist nicht aktiviert: Was bedeutet es, und wie behebe ich es?

Fehler:

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

Mein Code:

#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

Es sagt, wie man es richtig in der Fehlermeldung beheben. –

+1

Wie kann die Abwicklungssemantik aktiviert werden? –

+0

Die Fehlermeldung sagt Ihnen, und ich zitiere: "Angeben'/EHsc' ". Wenn Sie nicht wissen, was das bedeutet, warum suchen Sie nicht nach '/ EHsc' in Ihrer bevorzugten Suchmaschine? Das könnte sich als erhellend erweisen. –

Antwort

0

/EHsc Sache ist kein Fehler; es ist nur eine Warnung. Der Fehler ist über Datei-I/O:

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

Sie es einfach wieder aufzubauen, nachdem Sie sicher, dass Sie Schreibzugriff auf die Datei haben.

+0

Wie stelle ich sicher, dass ich Schreibrechte für Dateien habe? –

+0

@QasimImtiaz gut, versuchen Sie es einfach zu löschen. – ikh

Verwandte Themen