2017-02-02 4 views
-1

У меня есть этот класс, который при компиляции выдает C2059 и C 2238 ';' обе ошибки на обеих линиях. Почему этот код не компилируется?Ошибка компилятора при использовании «= delete» в 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; 
    } 
}; 

Я добавляю, что тот же код компилируется без каких-либо проблем в Visual Studio моего друга. ПРИМЕЧАНИЕ. Если я прокомментирую строки, которые компилирует код.

+2

Это интересная схема именования элементов данных. –

+1

Потому что машины моего университета установлены, и мы не можем установить то, что хотим. Поэтому, если я хочу сдать экзамен, мне нужно иметь дело с версией, установленной в лабораториях. – DDS

+0

Пожалуйста, правильно отложите свой код, чтобы мы могли его прочитать. –

ответ