[英]No instance of constructor std::istream_iterator
我有以下问题。 我想为我的班级创建一个文件构造函数。 我正在使用std::copy
算法,但出现这种错误:
No instance of constructor std::istream_iterator ... matches the argument list
error C2440: <function-style-cast> cannot convert from std::ifsteam to std::istream_operator
这是我的构造函数:
CAirport(const char* FileName, const string& name, const int& num)
{
m_strName = name;
m_uNum = num;
ifstream iStream(FileName);
if(iStream.good())
{
copy(istream_iterator<CAirtravel, unsigned>(iStream),
istream_iterator<CAirtravel, unsigned>(),
back_inserter(m_mAirtr));
}
}
的构造std::istream_iterator
预计istream_type
,这是一个typedef
为std::basic_istream<CharT, Traits>
。
您正在使用CharT = unsigned int
实例化std::istream_iterator
,这不是std::ifstream
的char
。 为什么要这么做? 完全省略第二个参数,让它默认为char
:
std::copy(std::istream_iterator<CAirtravel>(iStream),
std::istream_iterator<CAirtravel>(),
std::back_inserter(m_mAirtr));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.