2017-02-02 4 views
-1

コンパイル時にC2059とC2238 ';'を出力するこのクラスがあります。どちらの行にも両方のエラーがあります。なぜこのコードはコンパイルされないのですか?Visual Studio 2012で "= delete"を使用するとコンパイラエラーが発生する

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; 
    } 
}; 

私の友人のVisual Studioで問題なく同じコードがコンパイルされると付け加えます。注:コードをコンパイルする行をコメントする場合。

+2

これは興味深いデータメンバーの命名規則です。 –

+1

大学のマシンにインストールされているので、私たちが望むものをインストールすることはできません。私が試験に合格するには、ラボにインストールされているバージョンを扱わなければなりません – DDS

+0

私たちが読むことができるように、コードを正しくインデントしてください。 –

答えて

関連する問題