2017-02-02 1 views
-1

Ich habe diese Klasse, die, wenn kompiliert, gibt C2059 und C 2238 ';' beide Fehler in beiden Zeilen. Warum kompiliert dieser Code nicht?Compiler-Fehler bei der Verwendung von "= Löschen" in Visual Studio 2012

class bitreader 
{ 
    std::istream& §is; 
    std::uint8_t §buff; 
    int §n; 

    uint32_t read() 
    { 
     if (§n == 0) { 
      §buff = §is.get(); 
      §n = 8; 
     } 

     §n--; 

     return (§buff >> §n) & 1; 
    } 

public: 

    bitreader(std::istream& os) 
     : §is(os) 
     , §n(0) 
    {} 

    // The following two lines produce errors 
    bitreader(const bitreader& rhs) = delete; 
    bitreader& operator=(const bitreader& rhs) = delete; 

    uint32_t operator()(uint32_t n) 
    { 
     uint32_t val = 0; 

     while (n-- > 0) 
      val = (val << 1) | read(); 

     return val; 
    } 

    std::istream& operator()(uint32_t& val, uint32_t n) 
    { 
     val = 0; 
     while (n-->0) 
      val = (val << 1) | read(); 

     return §is; 
    } 
}; 

Ich füge hinzu, dass der gleiche Code kompiliert ohne irgendein Problem auf meinem Freund Visual Studio. HINWEIS: Wenn ich die Zeilen kommentiere, kompiliert der Code.

+2

Das ist ein interessantes Namensschema für Datenelemente. –

+1

Weil die Maschinen meiner Universität das installiert haben und wir nicht installieren können, was wir wollen. Also, wenn ich die Prüfung bestehen möchte, muss ich mit der Version umgehen, die in den Labors – DDS

+0

installiert ist Bitte stecken Sie Ihren Code richtig ein, damit wir ihn lesen können. –

Antwort

Verwandte Themen