Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C2679编译器从std::istream构造常量int成员变量时出错_C++_Iostream - Fatal编程技术网

C++ C2679编译器从std::istream构造常量int成员变量时出错

C++ C2679编译器从std::istream构造常量int成员变量时出错,c++,iostream,C++,Iostream,为什么我不能像下面的代码那样从istream构造一个整数成员变量?有办法吗 #include <iostream> // std::cout #include <fstream> // std::ifstream class a { public: a(std::istream& strm) : N(strm >> N) {} // error on this line*** void get_number(std

为什么我不能像下面的代码那样从istream构造一个整数成员变量?有办法吗

#include <iostream>     // std::cout
#include <fstream>      // std::ifstream


class a {
public:
   a(std::istream& strm) : N(strm >> N) {}  // error on this line***

   void get_number(std::istream& strm) {
      int a;
      strm >> a;
      std::cout << "you retrieved: " << a << " from stream\n";
   }

private:
   const int N;
};


int main() {
   std::ifstream ifs ("test.txt", std::ifstream::in);
   a(ifs);

   // this works
   int n;
   ifs >> n;
   std::cout << n;
   return 0;
}
#包括//std::cout
#include//std::ifstream
甲级{
公众:
a(std::istream&strm):N(strm>>N){}//此行出错***
无效获取编号(std::istream和strm){
INTA;
strm>>a;
std::cout编译。。。
1> main.cpp
1> c:\cpp\stream\u test\stream\u test\main.cpp(7):错误C2679:二进制“>>”:未找到接受“const int”类型的右操作数的运算符(或没有可接受的转换)
1> c:\program files(x86)\microsoft visual studio 9.0\vc\include\istream(1144):可以是“std::basic\u istream&std::operator>>(std::basic\u istream&,signed char*)”[使用参数相关查找找到]
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\program files(x86)\microsoft visual studio 9.0\vc\include\istream(1146):或“std::basic\u istream&std::operator>>(std::basic\u istream&,signed char&)”[使用参数相关查找找到]
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\program files(x86)\microsoft visual studio 9.0\vc\include\istream(1148):或“std::basic\u istream&std::operator>>(std::basic\u istream&,unsigned char*)”[使用参数相关查找找到]
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\program files(x86)\microsoft visual studio 9.0\vc\include\istream(1150):或“std::basic\u istream&std::operator>>(std::basic\u istream&,无符号字符&)”[使用参数相关查找找到]
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(155):或“std::basic\u istream&std::basic\u istream::operator>>(std::basic\u istream&(uu cdecl*)(std::basic\u istream&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(161):或“std::basic\u istream&std::basic\u istream::operator>>(std::basic\u ios&(uuu cdecl*)(std::basic\u ios&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(168):或“std::basic\u istream&std::basic\u istream::operator>>(std::ios\u base&(uU cdecl*)(std::ios\u base&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(175):或“std::basic\u istream&std::basic\u istream::operator>>(std::\u Bool&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(194):或“std::basic\u istream&std::basic\u istream::operator>>(简称&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\program files(x86)\microsoft visual studio 9.0\vc\include\istream(228):或“std::basic\u istream&std::basic\u istream::operator>>(未签名短&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(247):或'std::basic\u istream&std::basic\u istream::operator>>(int&)'
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(273):或“std::basic\u istream&std::basic\u istream::operator>>(未签名的int&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(291):或“std::basic\u istream&std::basic\u istream::operator>>(long&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(309):或“std::basic\u istream&std::basic\u istream::operator>>(\uuuuw64无符号长-)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(329):或'std::basic\u istream&std::basic\u istream::operator>>(\uu int64&)'
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(348):或“std::basic\u istream&std::basic\u istream::operator>>(未签名的\uu int64&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(367):或“std::basic\u istream&std::basic\u istream::operator>>(float&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(386):或“std::basic\u istream&std::basic\u istream::operator>>(双精度&)”
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>        ]
1> c:\ProgramFiles(x86)\microsoft visual studio 9.0\vc\include\istream(404):或'std::basic\u istream&std::basic\u istream::operator>>(长双精度&)'
1> 与
1>        [
1> _Elem=char,
1> _Traits=std::char_Traits
1>
1>------ Build started: Project: stream_test, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\cpp\stream_test\stream_test\main.cpp(7) : error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const int' (or there is no acceptable conversion)
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1144): could be 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1146): or       'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char &)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1148): or       'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(1150): or       'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char &)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(155): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_istream<_Elem,_Traits> &(__cdecl *)(std::basic_istream<_Elem,_Traits> &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(161): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(168): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(175): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::_Bool &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(194): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(short &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(228): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned short &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(247): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(int &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(273): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned int &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(291): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(309): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__w64 unsigned long &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(329): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__int64 &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(348): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned __int64 &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(367): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(float &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(386): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(double &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(404): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long double &)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(422): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(void *&)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\istream(441): or       'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_streambuf<_Elem,_Traits> *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        while trying to match the argument list '(std::istream, const int)'
1>c:\cpp\stream_test\stream_test\main.cpp(7) : fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Build log was saved at "file://c:\cpp\stream_test\stream_test\Debug\BuildLog.htm"
1>stream_test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
strm >> N 
const int N;
N( strm >> N )
N( ( strm >> N, N ) )
int get_from(std::istream& is)
{
    int i;
    if (is >> i) {
        return i;
    } else {
        // error, you might wanna throw here
    }
}
a(std::istream& strm) : N(get_from(strm)) {}