2016-03-13 2 views
-2

У меня есть следующая проблема. Я хочу создать конструктор файлов для своего класса. Я использую std::copy алгоритм, и я получаю такую ​​ошибку:Нет экземпляра конструктора std :: istream_iterator

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

ответ

0

Конструктор std::istream_iterator ожидает istream_type, который является typedef для std::basic_istream<CharT, Traits>.

Вы инстанцировании std::istream_iterator с CharT = unsigned int, который не является «s charstd::ifstream. Почему ты бы так поступил? Опустите второй параметр в целом, пусть он по умолчанию равен char:

std::copy(std::istream_iterator<CAirtravel>(iStream), 
      std::istream_iterator<CAirtravel>(), 
      std::back_inserter(m_mAirtr)); 
Смежные вопросы